gpt4 book ai didi

python - 在 Electron 应用程序中运行 python 脚本

转载 作者:IT老高 更新时间:2023-10-28 21:10:20 29 4
gpt4 key购买 nike

我有一个 Electron 项目,它使用 NodeJS 的 child_process 模块执行一些 python 脚本。我的 python 脚本位于项目的根文件夹中。

以下是我如何调用 python 脚本:

let py = spawn('python',['ResolvePosition.py', obsFilePath, navFilePath])
py.stdout.on('data', data => console.log('data : ', data.toString()))
py.on('close', ()=>{
// Python ends, do stuff
})

如果我使用 npm start 运行我的 Electron 应用程序,这很好用当我使用 npm 模块 electron-builder 为 Windows 构建可执行文件并从 dist/win-unpacked/my-app.exe 运行可执行文件时,这将不起作用,似乎我的脚本无法使用 python ./my-script-py.

那么,我怎样才能使这个代码适用于构建的项目?

最佳答案

我已经解决了我的问题。我会为 future 可能遇到同样问题的读者解释一下。

使用 Electron 生成器,有一些选项可以不将应用程序源代码打包到 Electron 文件中。这些选项是:

asar

Whether to package the application’s source code into an archive, using Electron’s archive format. Defaults to true. Node modules, that must be unpacked, will be detected automatically, you don’t need to explicitly set asarUnpack - please file issue if this doesn’t work.

Or you can pass object of asar options.

asarUnpack

A glob patterns relative to the app directory, which specifies which files to unpack when creating the asar archive.

DOCS

asar 设置为 false 可以解决问题,但 electron-builder 不建议这样做。

所以包括我需要解压到一个文件夹中的所有文件,并使用"asarUnpack": "my-folder/*" 是正确的方法。现在所有解压的文件都可以在 /resources/app.asar.unpacked/my-folder

中找到

要考虑的另一件事是,使用路径 './ResolvePosition.py' 将查看我的 Electron 项目的根文件夹,而不是我的 NodeJS 文件所在的路径,我需要使用:

let python = spawn('python', [path.join(__dirname, '../app.asar.unpacked/my-folder', 'ResolvePosition.py'), obsFilePath, navFilePath])

关于python - 在 Electron 应用程序中运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41199981/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com