gpt4 book ai didi

python - 如何将 Python + Electron JS 编译成桌面应用程序(exe)

转载 作者:行者123 更新时间:2023-12-03 15:50:44 25 4
gpt4 key购买 nike

我使用 创建了一个桌面应用程序python作为后端 Electron JS 与 Node JS 集成为前端 .
下图是我的项目的文件树。
enter image description here
我能够使用 renderer.js 将 python 与 Electron JS 连接起来。文件和我的应用程序按预期运行。
但我的问题是,我应该如何编译这个 Python + Electron JS 应用到 exe .我知道 pyinstaller 可用于编译python文件为exe .请告诉我如何编译 python + electron JS应用程序。
提前致谢。

最佳答案

因此,经过一番研究,我自己找到了解决方案。
第一步:将python文件编译成exe
首先,您需要转换 python文件到单个 exe使用 pyinstaller .命令是

pyinstaller --onefile engine.py 
你会发现 engine.exe里面 dist文件夹。复制 exe到您拥有 renderer.js 的主目录.删除所有其他与 python 相关的文件夹。
第 2 步:修改 renderer.js文件
最初,我有一个 renderer.js文件包含以下代码。 注:以下代码用于使用 sys.argv 运行我的 python 脚本输入并使用 stdout 获取输出.
function sendToPython() {
var python = require("child_process").spawn("python", [
"./py/engine.py",
input.value,
]);

python.stdout.on("data", function (data) {
// Do some process here
});

python.stderr.on("data", (data) => {
console.error(`stderr: ${data}`);
console.log(`stderr: ${data}`);
});

python.on("close", (code) => {
console.log(`child process exited with code ${code}`);
});
}
但是现在我们已经生成了 exe文件,我们需要进行一些修改才能使其正常工作。我们需要简单地改变线路。
var python = require("child_process").spawn("python", ["./py/engine.py", input.value]);
以下是该行的修改版本。
var python = require("child_process").execFile("engine.exe", [input.value]);
简而言之,它的作用是执行我们的 engine.exe使用命令行参数而不产生 python shell。
第 3 步:使用 electron-packager打包我们的应用程序
在您的项目文件夹中打开一个终端并运行以下命令(一个接一个)以安装 electron-packager全局使用 npm .
npm install --save-dev electron
npm install electron-packager -g
安装完成后,我们可以使用以下命令打包我们的应用程序。
electron-packager . pythonElectronApp --arch=x64 --asar
注: pythonElectronApp是项目名称(可以根据自己的意愿命名), --arch=x64表示 64 位架构。 --asar以阻止大多数人查看源代码的方式打包您的项目。无论如何,几乎所有人都可以通过查看 asar 来查看源代码。 Electron 转储出来的文件。您可以尝试代码混淆等方法来减缓攻击者的逆向工程。
关于代码混淆的有用资源 - How to perform obfuscation of source code and protect source in electron js
github中报告的类似问题 - https://github.com/electron/electron-packager/issues/152
第 4 步:放置我们的 engine.exe在正确的目录
复制 engine.exe我们之前创建的并将其粘贴到创建 Electron 应用程序的文件夹中。就我而言, pythonElectronApp-win32-x64现在您可以打开功能齐全的 python+electron应用程序。在我的情况下,名称是 pythonElectronApp.exe第 5 步:创建主安装程序文件 .msi正如您在上一张图片中看到的,有很多依赖项和文件夹。创建一个独立的安装程序,如 .msi对于windows,可以使用 Inno Setup之类的软件为你做。

关于python - 如何将 Python + Electron JS 编译成桌面应用程序(exe),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67146654/

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