Python 为什么导入pygame时会打印版本和欢迎信息。如何删除它?

Python 为什么导入pygame时会打印版本和欢迎信息。如何删除它?,python,terminal,pygame,Python,Terminal,Pygame,为什么在我导入pygame时会有一条消息,它会打印版本和欢迎消息。消息是 "pygame 1.9.4 Hello from the pygame community. https://www.pygame.org/contribute.html" 如何禁用此消息?我没有看到一种自然的方法(你的是我能找到的唯一一个谷歌结果),但我在导入pygame时临时禁用了stdout,实现了同样的效果 导入操作系统,系统 将open(os.devnull,'w')作为f: #禁用标准输出 oldstdo

为什么在我导入pygame时会有一条消息,它会打印版本和欢迎消息。消息是

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

如何禁用此消息?

我没有看到一种自然的方法(你的是我能找到的唯一一个谷歌结果),但我在导入pygame时临时禁用了stdout,实现了同样的效果

导入操作系统,系统 将open(os.devnull,'w')作为f: #禁用标准输出 oldstdout=sys.stdout sys.stdout=f 导入pygame #启用标准输出 sys.stdout=旧stdout 以下是@Mad Physicast建议的备选方案:

导入上下文库
使用contextlib.redirect\u stdout(无):
导入pygame

您可以导航到pygame库文件夹,类似于3.6 32位版本:

Python36-32\Lib\site-packages\pygame
编辑\uuuu init\uuuuu.py文件并删除最后一行以删除此消息

  • 导入pygame
  • 获取初始化文件的位置:
    f=pygame.\uuuu文件\uuuuu
  • 打开f并注释掉文件最后两行的打印内容

  • 与最后一行一起安装的版本将在不公布其名称的情况下工作。

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

    如果操作系统环境中没有“PYGAME\u HIDE\u SUPPORT\u PROMPT”:
    打印('pygame%s'%ver)
    打印('来自pygame社区的您好。https://www.pygame.org/contribute.html')
    


    这是最近(2018年10月)添加的,到目前为止,1.9.4是在此之前发布的。下一个版本>1.9.4发布后,您只需使用
    PYGAME\u HIDE\u SUPPORT\u PROMPT=./my\u code.py
    运行代码即可隐藏消息。

    进入PYGAME的
    \u init\u.py
    文件,进入该文件的底部,并注释掉这两个打印函数-

    print('pygame %s' % ver)
    print('Hello from the pygame community. https://www.pygame.org/contribute.html')
    
    然而,我不会这么做,因为pygame社区是一个开源社区,他们希望尽可能多的人为pygame贡献力量,这就是为什么他们最后有了这个打印功能。如果我是你的话,我不会把它说出来

    这对我很有用:

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

    对我来说,只有这一点在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()
    

    (感谢)

    这是一次禁用它的过程

    步骤1:
    • 运行包含以下代码的dummy.py:
    导入pygame
    pygame.\uu文件__
    
    步骤2:
    • 复制pygame源代码的路径,不包括
      \uuuu init\uuuu.py
    例子: 步骤3:
    • 通过将复制的位置粘贴到“运行”对话框或任何其他方式转到复制的位置
    步骤4:
    • 在任何文本编辑器中打开
      \uuuuu init\uuuuuu.py
      ,然后搜索欢迎
    • 从文件中删除以下代码:
    如果操作系统环境中没有“PYGAME\u HIDE\u SUPPORT\u PROMPT”:
    打印('pygame%s'%ver)
    打印('来自pygame社区的您好。https://www.pygame.org/contribute.html')
    
    • 现在保存文件,您就可以开始了
    你想利用别人的努力而不支持他们的努力吗?@ggdx他当然不想;但有时完全控制自己编写的程序的标准输出是件好事。@ggdx。如果没有更多的信息,你的评论是不符合逻辑的。图书馆做自我宣传是不礼貌的。请尝试
    contextlib.redirect\u stdout(无)
    以获取首选项。一般来说,进口和生产线较少。顺便说一句,contextlib.redirect_stdout是一个python3+的东西,而不是在python2中使用contextlib.redirect_stdout(无),我的SSH光标消失。对我来说,这是有效的:@ParasKorat对我来说似乎是不言自明的。如果我们使用pyinstaller将.py文件的.exe文件设置为py文件,则在未安装python的计算机上它会崩溃。这不仅可以精确定位到正确的路径,而且还可以工作。:)谢谢,GuyonStackOverflow至少在PyGame的最新版本中,您可以简单地设置一个环境变量,这要简洁得多:)请参见Eduardos answer。当您从moviepy.editor导入视频文件剪辑时,Eduardos answer将无法工作。
    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()
    
    C:\\Users\\dell\\AppData\\Roaming\\Python\\Python37\\site-packages\\pygame\\