相关文章推荐
很拉风的课本  ·  使用 JavaScript ...·  1 年前    · 
耍酷的大象  ·  用 Numba 加速 Python ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

When I import pygame, it prints the version and welcome message. The message reads:

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

Why is this printed? How can I disable this message?

OH great... Another env variable (and appears to not work if importing mixer from) -- Time for a new library – Angry 84 Jun 15, 2022 at 10:37

As can be seen in the source code, the message is not printed if the environment variable PYGAME_HIDE_SUPPORT_PROMPT is set. So the following code could be used to import pygame without printing the message:

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

Note that the value does not have to be "hide" but can be anything else as well, and the environment variable can also be set in other ways to achieve the same.

It crashes on computers where python is not Installed if we make .exe file of the .py file using pyinstaller – Super Sanglap Mar 11, 2021 at 4:03

Here's the better way alternative suggested by @Mad Physicist:

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

Or, if your Python is older than 3.4 you can achieve the same thing without the contextlib import by temporarily disabling stdout while importing pygame.

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
                With contextlib.redirect_stdout(None), my SSH cursor disappears. For me this worked: stackoverflow.com/a/8391735/8474284
– DaWe
                Sep 1, 2019 at 11:08

The source code contains a condition guarding the printing of this message:

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

See this commit

This was added fairly recently (October 2018) and so far 1.9.4 was released prior to this. Once the next version > 1.9.4 is released you should simply by able to run your code with PYGAME_HIDE_SUPPORT_PROMPT= ./my_code.py to hide the message.

You can navigate to the pygame library folder, something like this for 3.6 32 bit version:

Python36-32\Lib\site-packages\pygame

and edit the __init__.py file and remove the last line to get rid of this message.

Not portable in Git repos without hosting your packages in the repos, which is generally a bad practice. – UndyingJellyfish Jan 24, 2022 at 12:46

About Eduardo's answer, I was having problems with my formatter autopep8 and was unable to put the line to set the PYGAME_HIDE_SUPPORT_PROMPT environment variable above the line to import pygame. Thus, I had to do something like this:

import os # last import (all other imports above this one)
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = 'hide'
def import_pygame():
    global pygame
    import pygame
import_pygame()

I hope this helps anyone having the same issue.

This is one of the cases where I'd rather disable a checker (or put a suppression in the code if possible) then to sacrifice good coding practices. Another work-around is to put the import os; os.environ = ... in a file _manifest.py and then do import _manifest inside the main script. This way you achieve the same goal while still following the PEP8 conventions. – wovano Oct 22, 2022 at 12:54

For me, PYGAME_HIDE_SUPPORT_PROMPT does not work. Add this for the whole block of imports:

sys.stdout = open(os.devnull, "w")
# your other imports go here
import pygame
sys.stdout = sys.__stdout__

I kindly ask you though to only use this if the program will be launched graphically, to avoid spawning a console, or when you'll leave another message. You can print a shorter or more fitting one, or you can add it in a GUI.

Editing Pygame is not desirable if you are going to distribute your project in any way.

Go in pygame's __init__.py file, go at the bottom of that file, and comment out those two print function-

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

However, I would not do that since, pygame community is an open-source community, and they would want as many people as possible, to contribute to pygame, thats why they have this print function at that last. I would not comment it out, if I were you.

  • open __init__.py in any text editor and search for welcome
  • delete the following code from the file:
  • 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')
    
  • Now save the file and you are good to go!
  • You can go into pygame's __init__.py file and comment out the line that causes the message to be printed. It's exactly at line 355. Here is the code that does that.

    # Thanks for supporting pygame. Without support now, there won't be pygame 
    #later.
    if 'PYGAME_HIDE_SUPPORT_PROMPT' not in os.environ:
        print('pygame {} (SDL {}.{}.{}, Python {}.{}.{})'.format(
            ver, *get_sdl_version() + sys.version_info[0:3]
        print('Hello from the pygame community. 
          https://www.pygame.org/contribute.html')
    

    You can just go ahead and comment those lines out. I have tested it, it does not cause any problems.

    But always be thankful for pygame's free and opensource library.

    # 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-pygame
    

    The version installed with the last line will work without announcing its name.

    Unfortunately, Ubuntu's 1.9.6+dfsg-2build1 version does still produce this message by default. – Davis Herring Sep 8, 2021 at 4:17

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.