8

3天后,我无法将python程序打包成.exe文件。我试过 py2exe(它不断错过模块)和 PyInstaller。

这是复杂的部分。我的程序使用了很多额外的安装模块(coopr、pyomo、openpyxl、glpk、cbc、pyutilib、numpy 等)。这些又会导入各种其他的东西,我无法追踪它(PyInstaller 警告日志列出了 676 行丢失或可能不需要的模块。)

但是,我已经(通过将“缺失”模块的导入添加到我的程序中)获得了一个 .exe 版本,该版本可以通过双击或从命令行运行,而不会打印任何错误。

问题是,程序什么也没做。我有一个包含在构建中的输入文件,我的程序读入该文件,进行一些(密集)计算,然后在同一目录中创建一个 .csv 输出文件。它作为 .py 文件工作。我的 .exe 什么都不做。

所以,如果你能告诉我出了什么问题,请继续。如果没有,我想知道任何有用的步骤或想法可以尝试。至此,我已经用尽了可以从程序和文档中找到的反馈。

4

5 回答 5

10

我只是为自己解决了这个问题。

确保您没有与要转换为可执行文件的脚本同名的文件夹。

如果您已经拥有应用程序文件sample.py和文件夹sample(例如,其中包含您的其他 .py 文件)并且您希望应用程序保留名称,您可以通过重命名来sample解决此问题,然后使用 --name 选项调用 pyinstaller例如, 由 pyinstaller 创建的二进制文件将被调用。sample.pysample_app.pypyinstaller --onefile --name sample sample_app.pysample

于 2019-08-20T22:07:39.637 回答
6

创建exe时,请确保python脚本包含

if __name__ == '__main__':
    main()

在底部。否则,python exe 将运行,但由于它没有可运行的内容,它只会结束。

于 2016-11-02T20:58:02.297 回答
1

我也无法正常工作 pyinstaller,但几年前我找到了一个在 Windows 上生成 R 脚本可执行文件的解决方案,所以我用 python 尝试了它,它工作了!

这是解决方案,仅在 CMD 中的 3 行中:

https://github.com/jorgeavilacartes/making-my-own-executable-python

您可以创建自己的扩展并将其分配给您想要的 python.exe(如果您有许多 venv,您可以为每个扩展创建一个可执行扩展)

不幸的是,我只有 Windows 的解决方案。

希望能帮助到你!

PD:请注意不要.ipynb在您将创建可执行文件的同一文件夹中放置任何文件,它将无法正常运行,我不知道为什么,但这是我遇到的唯一问题。

于 2020-01-17T00:43:34.020 回答
1

当在 windows 中双击某个 exe 无法运行时,关联的窗口也会自动关闭。如果您遇到这种情况,请打开命令提示符并尝试通过转到适当的路径并输入文件名(例如C:\github\program\dist\main.py)来运行 exe。应用程序抛出的任何错误都将打印在命令提示符窗口中,而不会自动关闭。

于 2021-12-13T07:25:32.063 回答
0

如果您的脚本访问非 Python 文件,请移动可执行文件以便它可以找到它们。

我遇到了同样的问题。对我来说,原因是我的一些 Python 文件需要访问非 Python 文件(在我的例子中是 gifs)。PyInstaller 没有将资源与 Python 文件捆绑在一起,也没有将可执行文件粘贴在与主要 Python 文件相同的目录中,因此当我的程序尝试访问它们时出现错误。解决方案只是将资源复制到可执行文件正在寻找它们的位置,反之亦然。

出于某种原因,当我正常运行 PyInstaller 时,并没有生成帮助我找到问题的错误消息。它们仅在使用--onefile标志时生成,即使如此,它们也仅在提示关闭之前停留了不到半秒。当消息出现时,我必须使用ctrl+prt来捕获我的屏幕。

于 2020-01-02T05:25:57.003 回答