使用 Pyinstaller 冻结 Python 程序时摆脱控制台输出

Posted

技术标签:

【中文标题】使用 Pyinstaller 冻结 Python 程序时摆脱控制台输出【英文标题】:Getting rid of console output when freezing Python programs using Pyinstaller 【发布时间】:2013-07-09 05:06:08 【问题描述】:

我最近使用 Python 和 Tkinter 的 GUI 为我的祖父编写了一个相当简单的程序,它非常适合他将使用它的用途。但是,当然还有丑陋的控制台输出窗口。我只需将文件的扩展名从 .py 更改为 .pyw 就成功地摆脱了它。当我使用 PyInstaller 冻结它时,它又重新出现了!我有什么办法可以解决这个问题吗?

提前致谢。

【问题讨论】:

相关:Python - how can i hide the windows command prompt screen when the script is running? 【参考方案1】:

只需添加--noconsole 标志:

$ python pyinstaller.py --noconsole yourprogram.py

您可能还想使用--onefile,它会创建一个.exe 文件而不是文件夹。

【讨论】:

我正在运行 PyInstaller 2.0,这意味着我只需在正确目录中的 cmd 中键入 python pyinstaller.py MYCODE.pyw,它会为我完成其余的工作,包括制作 .spec 文件。我需要在某处中断程序并执行此行吗?如果有,怎么做? 感谢 --onefile 建议 @Blender。 $ python pyinstaller.py --noconsole --onefile yourprogram.py【参考方案2】:

如果要隐藏控制台窗口,here 是文档: 这就是您使用--noconsole 选项的方式

python pyinstaller.py --noconsole yourscript.py

如果您在使用 pyinstaller 以达到需要使用 --noconsole 选项的地步时需要帮助,here 是一个简单的教程。

【讨论】:

无论如何我都没有在控制台窗口打印任何东西,所以这无济于事。感谢您的尝试。 “当然,还有丑陋的控制台输出窗口”你的意思是要关闭它吗?或阻止它打开?如果是这样我误解了 是的,我就是这个意思。 os.system('exit') 会起作用,还是会关闭程序? @dfreeze no,点击我的编辑中的链接并控制-f 为“--noconsole”获取详细指南 请注意,--no-console 开关对 *NIX 系统没有任何影响。【参考方案3】:

这是搜索此信息时首先出现的内容之一,因此我想添加我在 pyinstaller 3.2 版中找到的内容。如果您已经通过运行打包了脚本

pyinstaller --onefile your_script.py

或类似的,您可以编辑 your_script.spec 文件以摆脱控制台。

    exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='main',
          debug=False,
          strip=False,
          upx=True,
          console=True )

只需将控制台值更改为 False。然后运行:

pyinstaller your_script.spec

此外,如果您对代码进行了更改,请运行上述命令以使它们反映在 your_script.exe 中。我发现这对于调试各种其他问题很有用。

【讨论】:

--noconsole 对我不起作用,但更改规范文件可以。谢谢。【参考方案4】:
Pyinstaller -F --noconsole yourfilename.pyw

这将创建一个 .exe 文件

Pyinstaller --noconsole yourfilename.pyw

使用它,您将获得 .exe 文件以及文件夹中的所有 .dll 和其他必要文件。

【讨论】:

我认为没有办法只获得一个 .exe!非常感谢+1 -F 标志代表什么? -F 代表一个文件,这个命令创建一个单一文件捆绑的可执行文件。请参阅完整文档。 pyinstaller.readthedocs.io/en/stable/usage.html【参考方案5】:

这个命令很好用

pyinstaller -F -w yourfilename.py

这会隐藏黑色的控制台窗口。

【讨论】:

以上是关于使用 Pyinstaller 冻结 Python 程序时摆脱控制台输出的主要内容,如果未能解决你的问题,请参考以下文章

pyinstaller - 冻结应用程序时 QtWebEngineWidgets 抛出 dll 错误

使用 pyinstaller 或 fbs 冻结应用程序会更改 pyside2 应用程序的默认配色方案

Python - 使用Pyinstaller将Python代码生成可执行文件

SDL2 错误:使用 pyinstaller 冻结 kivy 应用程序时“无法加载图像 <default.png>”

Python - 代码冻结后控制台关闭

PyInstaller ModuleNotFoundError --paths 标志似乎不起作用