为什么我导入pygame时会出现一条消息,它会打印版本和欢迎消息。消息显示为
"pygame 1.9.4 Hello from the pygame community.
https://www.pygame.org/contribute.html"
如何禁用此消息?
答案 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)
f = pygame.__file__
答案 5 :(得分:1)
这是一次禁用它的过程!
import pygame
pygame.__file__
__init__.py
C:\\Users\\dell\\AppData\\Roaming\\Python\\Python37\\site-packages\\pygame\\
__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
在最后一行安装的版本将起作用,而无需宣布其名称。