为什么在导入pygame时,会打印版本和欢迎消息.怎么删除它?

Aar*_*ron 26 python terminal pygame

为什么在导入pygame时会出现消息,它会打印版本和欢迎消息.消息显示

"pygame 1.9.4 Hello from the pygame community.
 https://www.pygame.org/contribute.html" 
Run Code Online (Sandbox Code Playgroud)

如何禁用此消息?

tsb*_*lan 27

我没有看到一种自然的方式来做到这一点(你的是我能找到的唯一的谷歌结果),但我确实通过在导入pygame时暂时禁用stdout来实现同样的目的.

import os, sys
with open(os.devnull, 'w') as f:
    # disable stdout
    oldstdout = sys.stdout
    sys.stdout = f

    import pygame

    # enable stdout
    sys.stdout = oldstdout
Run Code Online (Sandbox Code Playgroud)

这是@Mad Physicist建议的替代方案:

import contextlib
with contextlib.redirect_stdout(None):
    import pygame
Run Code Online (Sandbox Code Playgroud)

  • 这很自然.尝试使用`contextlib.redirect_stdout(None)`作为首选项.一般来说进口和生产线较少.也可能更强大. (9认同)

小智 24

这个对我有用:

import os
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
import pygame
Run Code Online (Sandbox Code Playgroud)

  • @ParasKorat对我来说似乎很不言自明。 (2认同)
  • 如果我们使用 pyinstaller 制作 .py 文件的 .exe 文件,它会在未安装 python 的计算机上崩溃 (2认同)

Wil*_*ill 8

源代码包含保护此消息打印的条件:

if 'PYGAME_HIDE_SUPPORT_PROMPT' not in os.environ:
    print('pygame %s' % ver)
    print('Hello from the pygame community. https://www.pygame.org/contribute.html')
Run Code Online (Sandbox Code Playgroud)

看到这个提交

它是在最近(2018年10月)添加的,到目前为止,在此之前已发布1.9.4。一旦发布了下一版本> 1.9.4,您只需通过运行代码PYGAME_HIDE_SUPPORT_PROMPT= ./my_code.py来隐藏消息即可。


小智 6

您可以导航到pygame库文件夹,对于3.6 32位版本,如下所示:

Python36-32\Lib\site-packages\pygame
Run Code Online (Sandbox Code Playgroud)

并编辑__init__.py文件,并删除最后一行以摆脱此消息。