使用 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代码生成可执行文件