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

dfr*_*eze 31 python pyinstaller

我最近为我的祖父使用Python和Tkinter的GUI编写了一个相当简单的程序,它可以很好地用于他将要使用的内容.但是,当然还有丑陋的控制台输出窗口.我通过简单地将文件的扩展名从.py更改为.pyw来成功摆脱它.当我使用PyInstaller冻结它时,它再次出现!我有什么方法可以解决这个问题吗?

提前致谢.

Ste*_*han 75

如果你想隐藏控制台窗口,这里是文档:这是你如何使用--noconsole选项

python pyinstaller.py --noconsole yourscript.py
Run Code Online (Sandbox Code Playgroud)

如果你需要帮助使用pyinstaller来达到你需要使用这个--noconsole选项的地方,是一个简单的教程.


Ble*_*der 14

只需添加--noconsole标志:

$ python pyinstaller.py --noconsole yourprogram.py
Run Code Online (Sandbox Code Playgroud)

您可能也想使用--onefile,这会创建单个.exe文件而不是文件夹.


小智 9

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

pyinstaller --onefile your_script.py
Run Code Online (Sandbox Code Playgroud)

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

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

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

pyinstaller your_script.spec
Run Code Online (Sandbox Code Playgroud)

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

  • --noconsole 对我不起作用,但更改规范文件确实如此。谢谢你。 (2认同)

小智 5

Pyinstaller -F --noconsole yourfilename.pyw
Run Code Online (Sandbox Code Playgroud)

这将创建一个 .exe 文件

Pyinstaller --noconsole yourfilename.pyw
Run Code Online (Sandbox Code Playgroud)

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