Aarón
Cuando importo pygame, imprime la versión y el mensaje de bienvenida. El mensaje dice:
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
¿Por qué se imprime esto? ¿Cómo puedo desactivar este mensaje?
Eduardo Dalapicola
Como puede verse en el código fuenteel mensaje no se imprime si la variable de entorno PYGAME_HIDE_SUPPORT_PROMPT
Está establecido. Entonces, el siguiente código podría usarse para importar pygame sin imprimir el mensaje:
import os
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
import pygame
Tenga en cuenta que el valor no tiene que ser "hide"
pero también puede ser cualquier otra cosa, y la variable de entorno también se puede configurar de otras maneras para lograr lo mismo.
-
Se bloquea en las computadoras donde python no está instalado si creamos un archivo .exe del archivo .py usando pyinstaller
– Súper Sanglap
11 de marzo de 2021 a las 4:03
bertalan
No vi una forma natural de hacerlo (el tuyo es el único resultado de Google para esto que pude encontrar), pero logré lo mismo al deshabilitar temporalmente la salida estándar mientras importaba 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
Aquí está la alternativa sugerida por @Mad Physicist:
import contextlib
with contextlib.redirect_stdout(None):
import pygame
-
Eso es perfectamente natural. Probar
contextlib.redirect_stdout(None)
por una preferencia. Menos importaciones y renglones en general. También probablemente más robusto.– Físico loco
22 de julio de 2018 a las 23:36
-
por cierto, contextlib.redirect_stdout es una cosa de python3+, no en python2
– fche
5 de enero de 2019 a las 15:15
-
Con contextlib.redirect_stdout (Ninguno), mi cursor SSH desaparece. Para mí esto funcionó: stackoverflow.com/a/8391735/8474284
– DaWe
1 de septiembre de 2019 a las 11:08
-
Recomiendo eliminar el primer fragmento de código, porque la segunda solución (usar
contextlib
) es mucho mejor. Es menos código, no deja variables globales (oldstdout
) en el espacio de nombres y restaurastdout
en caso de excepciones. ¿Por qué reinventar la rueda si la biblioteca estándar brinda esta funcionalidad de una manera simple y robusta?– wovano
22 oct a las 12:48
El código fuente contiene una condición que protege la impresión de este mensaje:
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')
Ver este compromiso
Esto se agregó recientemente (octubre de 2018) y hasta ahora se lanzó 1.9.4 antes de esto. Una vez que se publique la próxima versión> 1.9.4, simplemente debería poder ejecutar su código con PYGAME_HIDE_SUPPORT_PROMPT= ./my_code.py
para ocultar el mensaje.
Kalif
Puede navegar a la carpeta de la biblioteca de pygame, algo como esto para la versión 3.6 de 32 bits:
Python36-32\Lib\site-packages\pygame
y editar el __init__.py
archivo y elimine la última línea para deshacerse de este mensaje.
- importar pygame
- Obtenga la ubicación del archivo de inicio:
f = pygame.__file__
- Abra f y comente la impresión en las dos últimas líneas del archivo.
Pirámide
Sobre la respuesta de Eduardo, estaba teniendo problemas con mi formateador autopep8
y no pude poner la línea para configurar el PYGAME_HIDE_SUPPORT_PROMPT
variable de entorno encima de la línea para importar pygame
. Por lo tanto, tuve que hacer algo como esto:
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()
Espero que esto ayude a cualquiera que tenga el mismo problema.
dawe
Para mí, solo esto funcionó en 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()
(gracias por bandolero!)
Es de mala educación que una biblioteca se autopromocione.
– fche
5 de enero de 2019 a las 15:13
Problema relevante de pygame: github.com/pygame/pygame/issues/1468
– Cas
13 de diciembre de 2019 a las 17:38
OH genial… Otra variable env (y parece que no funciona si se importa el mezclador desde) — Tiempo para una nueva biblioteca
– Enojado 84
15 de junio a las 10:37
No creo que el propósito del mensaje de bienvenida sea publicidad. Es un llamado a la contribución. Y lo considero muy justo ya que Pygame es una de las mejores bibliotecas de Python. Además, uno puede suprimir el mensaje muy fácilmente desde el script PY.
– Apóstoles
5 de septiembre a las 2:59