3天后,我无法将python程序打包成.exe文件。我试过py2exe(不断错过模块)和PyInstaller。
这是复杂的部分。我的程序使用了许多额外安装的模块(coopr,pyomo,openpyxl,glpk,cbc,pyutilib,numpy等)。这些反过来导入各种其他东西,我无法追踪它(PyInstaller警告日志列出了676行丢失或可能不需要的模块。)
但是,我已经(通过向我的程序添加“缺失”模块的导入)获得了一个.exe版本,该版本通过双击或从命令行运行,而不会打印任何错误。
问题是,程序什么都不做。我有一个输入文件,它包含在我的程序读入的构建中,执行一些(强烈的)计算,然后在同一目录中创建.csv输出文件。它作为.py文件工作。我的.exe什么都不做。
所以,如果你能告诉我什么是错的继续。如果没有,我想知道任何有用的步骤或想法尝试。在这一点上,我已经用尽了我从程序和文档中找到的反馈。
答案 0 :(得分:2)
创建exe时,请确保python脚本包含
if __name__ == '__main__':
main()
在底部。否则,python exe将运行,但由于它没有任何运行,它将结束。
答案 1 :(得分:1)
我只是为自己解决了这个问题。
请确保您没有与要转换为可执行文件的脚本同名的文件夹。
答案 2 :(得分:1)
我也无法使pyinstaller正常工作,但是几年前,我找到了一种在Windows上生成R脚本可执行文件的解决方案,因此我在python上进行了尝试,并且成功了!
这是解决方案,在CMD中仅3行:
https://github.com/jorgeavilacartes/making-my-own-executable-python
您可以创建自己的扩展名并将其与所需的python.exe关联(如果您有很多venv,则可以为每个扩展名创建一个可执行扩展名)
不幸的是,我只有Windows的解决方案。
希望有帮助!
PD:请注意,在要创建可执行文件的同一文件夹中不要包含任何.ipynb
,它将无法正常运行,我也不知道为什么,但这是我唯一的问题。
答案 3 :(得分:0)
差不多一年没有解决方案。我想你现在已经从这个问题上移开了,但现在我遇到了同样的问题。我使用带有--onefile
选项的PyInstaller。
您尝试使用--noupx
了吗?以某种方式修复了我尝试编译的第一个脚本的问题。不幸的是,这是唯一可以处理的脚本 - 使用--noupx
(使用和不使用--onefile
选项)使用pyinstaller编译其他.py脚本再次生成.exe文件,它们不做任何事情
答案 4 :(得分:0)
如果您的脚本访问非Python文件,请移动可执行文件以使其能够找到它们。
我遇到了同样的问题。对我来说,原因是我的某些Python文件需要访问非Python文件(在我的情况下为gif)。 PyInstaller并未将资源与Python文件捆绑在一起,也没有将可执行文件与主Python文件粘贴在同一目录中,因此当我的程序尝试访问它们时出现错误。解决方案就是将资源复制到可执行文件正在寻找它们的位置,反之亦然。
由于某种原因,当我正常运行PyInstaller时,不会生成帮助我发现问题的错误消息。它们仅在使用--onefile
标志时生成,即使在那时,它们也只停留了不到半秒钟,直到提示关闭。出现消息时,我必须使用 ctrl + prt 捕获屏幕。