我刚刚创建了一个由 Flask 提供支持的电子应用程序。
当我在 powershell 中运行该应用程序时,它运行得很好,但是当我使用 electro-packager 构建该应用程序时,它成功了,但该应用程序无法运行。
看来 python 代码不会包含在应用程序中。如何构建应用程序并集成我在应用程序中使用的所有 python 代码和模块?
我正在使用任何 python 模块,例如 pandas
小智 0
使用 PyInstaller 构建 Flask 应用程序.. 您可以通过 google 找到有关它的各种教程.. 选择适合您需求的一个。阅读官方文档总是好的https://www.pyinstaller.org/。好吧,我不知道你创建电子入口点的方法。我所做的是,在入口点(对我来说通常是 main.js)我创建了一个在应用程序准备就绪时调用的函数。我从Electron 框架上的 Python和https://github.com/fyears/electron-python-example获得的一些东西
main.js
'use strict';
const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const path = require('path');
// This method will be called when Electron has finished
// initialization and is ready to create browser mainWindow.
// Some APIs can only be used after this event occurs.
var mainWindow = null;
function createWindow(){
// spawn server and call the child process
var rq = require('request-promise');
mainAddr = 'http://localhost:4040/'
// tricks 1 worked for me on dev.. but building installer of electron
// server never started.. didn't find time to fixed that
// var child = require('child_process').spawn('python',
// ['.path/to/hello.py']);
// or bundled py
// var child = require('child_process').spawn('.path/to/hello.exe');
// tricks 2, a little variation then spawn :)
var executablePath = './relative/path/to/your/bundled_py.exe';
var child = require('child_process').execFile;
child(executablePath, function(err, data) {
if(err){
console.error(err);
return;
}
console.log(data.toString());
});
// Create the browser mainWindow
mainWindow = new BrowserWindow({
minWidth: 600,
minHeight: 550,
show: false
});
// Load the index page of the flask in local server
mainWindow.loadURL(mainAddr);
// ready the window with load url and show
mainWindow.once('ready-to-show', () => {
mainWindow.show();
});
// Quit app when close
mainWindow.on('closed', function(){
mainWindow = null;
// kill the server on exit
child.kill('SIGINT');
});
// (some more stuff, eg. dev tools) skipped...
};
var startUp = function(){
rq(mainAddr)
.then(function(htmlString){
console.log('server started!');
createWindow();
})
.catch(function(err){
//console.log('waiting for the server start...');
startUp();
});
};
app.on('ready', startUp)
app.on('quit', function() {
// kill the python on exit
child.kill('SIGINT');
});
app.on('window-all-closed', () => {
// quit app if windows are closed
if (process.platform !== 'darwin'){
app.quit();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5399 次 |
| 最近记录: |