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

时间:2018-07-22 11:07:42

标签: python terminal pygame

为什么我导入pygame时会出现一条消息,它会打印版本和欢迎消息。消息显示为

"pygame 1.9.4 Hello from the pygame community.
 https://www.pygame.org/contribute.html" 

如何禁用此消息?

9 个答案:

答案 0 :(得分:23)

我没有发现一种自然的方法(您是我唯一能找到的Google结果),但是我确实在导入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

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

import contextlib
with contextlib.redirect_stdout(None):
    import pygame

答案 1 :(得分:5)

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

Python36-32\Lib\site-packages\pygame

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

答案 2 :(得分:5)

它对我有用:

import os
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
import pygame

答案 3 :(得分:4)

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

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')

请参见this commit

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

答案 4 :(得分:1)

  1. 导入pygame
  2. 获取初始化文件的位置:f = pygame.__file__
  3. 打开f并注释掉文件最后两行的打印内容

答案 5 :(得分:1)

这是一次禁用它的过程!

步骤1:

  • 运行包含以下代码的dummy.py:
import pygame 
    
pygame.__file__

步骤2:

  • 复制pygame源代码的路径(不包括__init__.py

示例:

C:\\Users\\dell\\AppData\\Roaming\\Python\\Python37\\site-packages\\pygame\\

步骤3:

  • 通过将其粘贴到“运行”对话框中或其他任何方式来转到复制的位置

步骤4:

  • 在任何文本编辑器中打开__init__.py并搜索“欢迎”
  • 从文件中删除以下代码:
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')
  • 现在保存文件,一切顺利!

答案 6 :(得分:0)

进入pygame的__init__.py文件,进入该文件的底部,并注释掉这两个打印功能-

print('pygame %s' % ver)
print('Hello from the pygame community. https://www.pygame.org/contribute.html')

但是,我不愿意这样做,因为pygame社区是一个开放源代码社区,他们希望尽可能多的人为pygame做出贡献,这就是为什么他们最后拥有这种打印功能。如果我是你,我不会评论。

答案 7 :(得分:0)

对我来说,只有这才在python 3中起作用:

import sys, os

# Disable print
def blockPrint():
    sys.stdout = open(os.devnull, 'w')

# Enable print
def enablePrint():
    sys.stdout = sys.__stdout__


blockPrint()
import pygame
enablePrint()

(感谢Brigand!

答案 8 :(得分:-1)

# remove pygame installed with "pip install..."
python pip uninstall pygame
# remove all folder with pygame
sudo apt-get update -y; sudo apt-get upgrade -y
sudo apt-get install python-pyame

在最后一行安装的版本将起作用,而无需宣布其名称。