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

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

提前致谢。

【问题讨论】:

标签: python pyinstaller


【解决方案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

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

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多