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

Pro*_*ess 11 python exe compilation electron

我创建了一个桌面应用程序,使用python 作为后端使用与 Node JS 集成的 Electron JS 作为前端

下图是我的项目的文件树。

在此处输入图片说明

我能够使用renderer.js文件将 python 与 Electron JS 连接起来,我的应用程序按预期运行。

但我的问题是,我应该如何将这个Python + Electron JS应用程序编译成exe. 我知道pyinstaller可用于将 python 文件编译为exe. 请让我知道如何编译这个python + electron JS应用程序。

提前致谢。

Pro*_*ess 12

因此,经过一番研究后,我自己找到了解决方案。

步骤1:将python文件编译为exe

首先,您需要python使用. 命令是exepyinstaller

pyinstaller --onefile engine.py 
Run Code Online (Sandbox Code Playgroud)

engine.exe您将在文件夹内找到dist。将 复制exe到您拥有renderer.js. 删除所有其他与 python 相关的文件夹。

第 2 步:修改renderer.js文件

最初,我有一个renderer.js包含以下代码的文件。注意:以下代码用于运行我的 python 脚本,使用sys.argv输入并使用 获取输出stdout

pyinstaller --onefile engine.py 
Run Code Online (Sandbox Code Playgroud)

但现在我们已经生成了exe文件,我们需要进行一些修改才能使其正常工作。我们只需更改线路即可。

var python = require("child_process").spawn("python", ["./py/engine.py", input.value]);
Run Code Online (Sandbox Code Playgroud)

以下是该行的修改版本。

var python = require("child_process").execFile("engine.exe", [input.value]);
Run Code Online (Sandbox Code Playgroud)

简而言之,它的作用是,它engine.exe使用命令行参数执行我们的命令,而不生成 python shell。

第3步:使用electron-packager来打包我们的应用程序

在项目文件夹中打开一个终端并运行以下命令(一个接一个)以electron-packager使用npm.

npm install --save-dev electron
npm install electron-packager -g
Run Code Online (Sandbox Code Playgroud)

安装后,我们可以使用以下命令来打包我们的应用程序。

electron-packager . pythonElectronApp --arch=x64 --asar
Run Code Online (Sandbox Code Playgroud)

注: pythonElectronApp是项目名称(可以根据自己的喜好命名),--arch=x64表示64位架构。

--asar以阻止大多数人查看源代码的方式打包您的项目。asar无论如何,几乎所有人都可以通过检查Electron 转储的文件来查看源代码。您可以尝试代码混淆等方法来减慢攻击者的逆向工程速度。

有关代码混淆的有用资源-如何在 Electron js 中对源代码进行混淆并保护源代码

github 中报告了类似的问题- https://github.com/electron/electron-packager/issues/152

第4步:将我们的放在engine.exe正确的目录中

复制engine.exe我们之前创建的文件并将其粘贴到创建电子应用程序的文件夹中。就我而言,pythonElectronApp-win32-x64

现在您可以打开功能齐全的python+electron应用程序。就我而言,名字是pythonElectronApp.exe

第 5 步:创建主安装程序文件.msi

正如您在上图中前面看到的,有很多依赖项和文件夹。要创建一个像 Windows 一样的独立安装程序,您可以使用Inno Setup.msi等软件来完成。

  • 如果您有更好的实现方法,请建议另一种解决方案。 (10认同)