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
因此,经过一番研究后,我自己找到了解决方案。
exe
首先,您需要python
使用. 命令是exe
pyinstaller
pyinstaller --onefile engine.py
Run Code Online (Sandbox Code Playgroud)
engine.exe
您将在文件夹内找到dist
。将 复制exe
到您拥有renderer.js
. 删除所有其他与 python 相关的文件夹。
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。
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
engine.exe
正确的目录中复制engine.exe
我们之前创建的文件并将其粘贴到创建电子应用程序的文件夹中。就我而言,pythonElectronApp-win32-x64
现在您可以打开功能齐全的python+electron
应用程序。就我而言,名字是pythonElectronApp.exe
.msi
正如您在上图中前面看到的,有很多依赖项和文件夹。要创建一个像 Windows 一样的独立安装程序,您可以使用Inno Setup.msi
等软件来完成。