这是我的目录结构,其中renderer.js
包含在index.html
中。python脚本visitor.py
和download.py
是通过python-shell从renderer.js
调用的。一旦我捆绑,它就无法找到python脚本
|_ index.html
|_ styles.css
|_ main.js
|_ package.json
|_ dist/
|_ node_modules/
|_ renderer.js
|_ visitor.py
|_ download.py
字符串
我试着把files: [...]
中的所有东西都放在build > files
下的package.json
中,然后运行npm run dist
。我还试着把python文件显式复制到dist
文件夹中,然后运行npm run dist
。没有一个工作。
test.app/Contents/Resources/app.asar/remderer.js:226错误:python:无法打开文件'visitor.py':[错误2]没有这样的文件或目录
这是我的package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"start": "electron .",
"pack": "build --dir",
"dist": "build"
},
"author": "",
"license": "ISC",
"build": {
"appId": "com.example.app",
"files": [
"dist/",
"node_modules/",
"index.html",
"main.js",
"package.json",
"renderer.js",
"styles.css",
"visitor.py",
"download.py"
],
"dmg": {
"contents": [
{
"x": 110,
"y": 150
},
{
"x": 240,
"y": 150,
"type": "link",
"path": "/Applications"
}
]
},
"linux": {
"target": [
"AppImage",
"deb"
]
},
"win": {
"target": "squirrel",
"icon": "build/icon.ico"
}
},
"dependencies": {
"csv-parse": "^2.5.0",
"electron-css": "^0.6.0",
"npm": "^6.1.0",
"python-shell": "^0.5.0",
},
"devDependencies": {
"electron": "^2.0.3",
"electron-builder": "^20.19.1"
}
}
型
PS:这是我说的https://github.com/electron-userland/electron-builder电子构建器
3条答案
按热度按时间3bygqnnd1#
Please makeure not your typo
/Application/test.app/Contents/Resources/app.asar/remderer.js:226 Error: python: can't open file 'visitor.py': [Error 2] No such file or directory
是remderer.js,但其他地方是renderer.js,所以请确保不是您的错别字。如果是,请更正。原因
实际上
electron-builder
是捆绑你的python文件,但由于asar
,你的python-shell
无法找到你的python文件,所以导致错误。如何修复
解决方案一:
最好但官方不推荐:禁用asar
如何使用
disable asar
将
package.json
更改为:字符串
然后在你的
renderer.js
,其中包含python-shell
代码,可能像这样:型
现在应该工作了。
内部逻辑
禁用asar后,所有相关的文件路径都不包含asar,变成这样:
/Application/test.app/Contents/Resources/app/visitor.py
个/Application/test.app/Contents/Resources/app/renderer.js
也就是说,
.app
文件结构为:型
方案二:
继续启用asar,将额外文件放入
unpack
:asar解压方法
将
package.json
更改为:型
打包的
.app
文件结构是:型
你的
renderer.js
,也许不需要改变,应该工作。有关
asarUnpack
的更多详细信息,请参阅官方文档:Overridable per Platform OptionsPS:其他一些asar和相关的尝试,可以参考我的中文帖子:【已解决】mac中PyInstaller打包后的二进制文件在electron-builder打包后app中有些无法通过child_process的execFile运行
eivnm1vs2#
您需要按如下方式指定它们:
字符串
如果你想把这些文件通过创建目录然后使用extraResources
型
更多信息,请参阅here
wnvonmuf3#
请在package.json中使用作者作为发布者信息
字符串