Почему при импорте 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 и удалите последнюю строку, чтобы избавиться от этого сообщения.

  1. импорт пигмей
  2. Получить расположение файла инициализации: f = pygame.__file__
  3. Откройте 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 файл и закомментируйте строку, предлагающую напечатать сообщение. это точно в строке 355 вот код, который делает это.

      # 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 нежелательно, если вы собираетесь каким-либо образом распространять свой проект.

Другие вопросы по тегам