我刚创建了一个由Flask驱动的电子应用程序。
当我在powershell中运行应用程序时效果很好但是当我使用electron-packager构建此应用程序时,它成功但应用程序无效。
似乎python代码不会包含在应用程序中。 如何通过集成我在应用程序中使用的所有python代码和模块来构建应用程序?
我正在使用像pandas
这样的任何python模块答案 0 :(得分:0)
使用PyInstaller构建烧瓶应用程序..您可以通过谷歌找到它的各种教程..选择一个适合您的需求。总是很高兴阅读官方文档https://www.pyinstaller.org/。 好吧,我不知道你创建电子入口点的方法。我做的是,在入口点(通常是main.js对我来说)我已经创建了一个在app上调用的函数已准备就绪。我从Python on Electron framework和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();
}
});
答案 1 :(得分:0)