Почему при импорте pygame печатается версия и приветственное сообщение. Как удалить это?
Почему при импорте pygame появляется сообщение, где печатается версия и приветственное сообщение. Сообщение гласит
"pygame 1.9.4 Hello from the pygame community.
https://www.pygame.org/contribute.html"
Как я могу отключить это сообщение?
15 ответов
Меня устраивает:
import os
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
import pygame
Я не видел естественного способа сделать это (ваш единственный результат 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
Исходный код содержит условие, защищающее печать этого сообщения:
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
скрыть сообщение.
Вы можете перейти в папку библиотеки pygame, что-то вроде этого для 3.6 32-битной версии:
Python36-32\Lib\site-packages\pygame
и отредактируйте файл __init__.py и удалите последнюю строку, чтобы избавиться от этого сообщения.
- импорт пигмей
- Получить расположение файла инициализации:
f = pygame.__file__
- Откройте f и закомментируйте печать в последних двух строках файла
Это однократный процесс, чтобы отключить его!
Шаг 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')
- Теперь сохраните файл, и все готово!
Для меня это работало только в 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!)
Что касается ответа Эдуардо, у меня были проблемы с форматированием.autopep8
и не смог поставить строку для установкиPYGAME_HIDE_SUPPORT_PROMPT
переменная среды над строкой для импортаpygame
. Таким образом, мне пришлось сделать что-то вроде этого:
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()
Я надеюсь, что это поможет любому, у кого есть такая же проблема.
Это отлично работает для меня:
from os import environ
environ['PYGAME_HIDE_SUPPORT_PROMPT'] = '1'
import pygame
Вам просто нужно убедиться, что ваш импорт не перестраивается.
И это произошло до любого импорта всего, что импортирует pygame, а не только до вашего импорта pygame.
Щелкните Alt или ctrl в pygame в своем коде и нажмите Ctrl + F, а затем вставьте 'pygame 1.9.4 Привет от сообщества pygame. https://www.pygame.org/contribute.html'... . вам нужно найти, было ли это сообщение формой этого файла python, поэтому вы ctrl + f и набираете сообщение или просто набираете https://www.pygame.org .... это ясно
Вот как я это сделал в своем модуле DialogX:
import sys
sys.stdout = open(os.devnull, "w")
import pygame
sys.stdout = sys.__stdout__
del globals()["sys"]
Пойти в пигаме __init__.py
файл, перейдите в конец этого файла и закомментируйте эти две функции печати
print('pygame %s' % ver)
print('Hello from the pygame community. https://www.pygame.org/contribute.html')
Тем не менее, я бы не стал этого делать, поскольку сообщество pygame - это сообщество с открытым исходным кодом, и они хотели бы, чтобы как можно больше людей внесли свой вклад в pygame, поэтому у них есть эта функция печати в последнюю очередь. Я бы не стал это комментировать, если бы я был тобой.
Вы можете войти в pygame
# 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')
Вы можете просто пойти и прокомментировать эти строки. Протестировал, проблем не вызывает.
Но всегда будьте благодарны pygame за бесплатную библиотеку с открытым исходным кодом.
# 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
Версия, установленная с последней строкой, будет работать без объявления ее имени.
Для меня,
PYGAME_HIDE_SUPPORT_PROMPT
не работает. Добавьте это для всего блока импорта:
sys.stdout = open(os.devnull, "w")
# your other imports go here
import pygame
sys.stdout = sys.__stdout__
Убедительно прошу вас использовать это только в том случае, если программа будет запускаться графически, чтобы избежать появления консоли или когда вы оставите другое сообщение. Вы можете распечатать более короткий или более подходящий вариант или добавить его в графическом интерфейсе.
Редактирование Pygame нежелательно, если вы собираетесь каким-либо образом распространять свой проект.