ish*_*007 4 python node.js python-3.x electron electron-builder
这是我的目录结构,其中renderer.js
包含index.html
. python 脚本visitor.py
是通过python-shelldownload.py
调用的。一旦我捆绑,它就无法找到Python脚本renderer.js
|_ index.html
|_ styles.css
|_ main.js
|_ package.json
|_ dist/
|_ node_modules/
|_ renderer.js
|_ visitor.py
|_ download.py
Run Code Online (Sandbox Code Playgroud)
我试着把所有东西都放进去files: [...]
然后跑。我还尝试将 python 文件显式复制到文件夹,然后运行. 没有人在工作。package.json
build > files
npm run dist
dist
npm run dist
/Application/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"
}
}
Run Code Online (Sandbox Code Playgroud)
PS:这是我正在谈论的电子构建器 https://github.com/electron-userland/electron-builder
/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
\n\ndisable asar
将你改为package.json
:
{\n...\n "build": {\n "appId": "com.example.app",\n...\n "asar": false,\n
Run Code Online (Sandbox Code Playgroud)\n\n然后在你的renderer.js
,其中包含python-shell
代码,可能是这样的:
{\n...\n "build": {\n "appId": "com.example.app",\n...\n "asar": false,\n
Run Code Online (Sandbox Code Playgroud)\n\n现在应该工作了。
\n\n禁用asar后,所有相关文件路径不再包含asar,变成这样:
\n\n/Application/test.app/Contents/Resources/app/visitor.py
/Application/test.app/Contents/Resources/app/renderer.js
即.app
文件结构为:
|_ test.app\n |_ Contents\n |_ Resources\n |_ app\n |_ styles.css\n |_ main.js\n |_ package.json\n |_ dist/\n |_ node_modules/\n |_ renderer.js\n |_ visitor.py\n |_ download.py\n ...\n
Run Code Online (Sandbox Code Playgroud)\n\n保持启用asar,将额外的文件放入unpack
:
将你改为package.json
:
{\n...\n "build": {\n "appId": "com.example.app",\n...\n "asar": true,\n "asarUnpack": [\n "visitor.py",\n "download.py"\n "renderer.js"\n ],\n
Run Code Online (Sandbox Code Playgroud)\n\n打包后的.app
文件结构为:
|_ test.app\n |_ Contents\n |_ Resources\n |_ app.asar # a single compressed binary file\n |_ app.asar.unpacked # a folder/directory, contain unpacked origin files\n |_ visitor.py\n |_ download.py\n |_ renderer.js\n
Run Code Online (Sandbox Code Playgroud)\n\n你的renderer.js
,也许不需要改变,并且应该可以工作。
更多详细信息asarUnpack
请参考官方文档:Overridable per Platform Options
归档时间: |
|
查看次数: |
6101 次 |
最近记录: |