Почему при импортировании pygame он печатает версию и приветственное сообщение. Как удалить его?

Почему появляется сообщение, когда я импортирую pygame, он печатает версию и приветственное сообщение. Сообщение читает

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

Как отключить это сообщение?

Ответы

Ответ 1

Я не видел естественного способа сделать это (ваш единственный результат Google для этого, который я мог найти), но я сделал то же самое, временно отключив stdout при импорте 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

Здесь альтернатива, предложенная @Mad Physicist:

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

Ответ 2

Меня устраивает:

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

Ответ 3

Исходный код содержит условие, защищающее печать этого сообщения:

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

Смотрите этот коммит

Это было добавлено довольно недавно (октябрь 2018), и до сих пор 1.9.4 был выпущен до этого. Как только выйдет следующая версия> 1.9.4, вы просто сможете запустить свой код с помощью PYGAME_HIDE_SUPPORT_PROMPT=./my_code.py чтобы скрыть сообщение.

Ответ 4

Вы можете перейти к папке библиотеки pygame, что-то вроде этого для 32-битной версии 3.6:

Python36-32\Lib\site-packages\pygame

и отредактируйте файл __init__.py и удалите последнюю строку, чтобы избавиться от этого сообщения.

Ответ 5

  1. импорт пигмей
  2. Получить расположение файла инициализации: f = pygame.__file__
  3. Откройте f и закомментируйте печать в последних двух строках файла

Ответ 6

Перейдите в файл pygame __init__.py, перейдите в конец этого файла и закомментируйте эти две печати function-

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

Тем не менее, я бы не стал этого делать, поскольку сообщество pygame - это сообщество с открытым исходным кодом, и они хотели бы, чтобы как можно больше людей внесли свой вклад в pygame, поэтому у них есть эта функция печати в последнюю очередь. Я бы не стал это комментировать, если бы я был тобой.

Ответ 7

Я недавно опубликовал pygamesilent.

Это шим (бесплатный, с открытым исходным кодом), который можно использовать в качестве замены в любом месте, где вы импортируете Pygame. Он использует PYGAME_HIDE_SUPPORT_PROMPT путь PYGAME_HIDE_SUPPORT_PROMPT, но делает все это в одном месте, поэтому вам не нужно повторять код в каждом файле в каждом проекте.

Ответ 8

Для меня только это работало в 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()

(спасибо за Разбойника!)

Ответ 9

# 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

Версия, установленная с последней строкой, будет работать без объявления ее имени.