1.2. Variables de entorno¶
estas variables de entorno influyen en el comportamiento de Python, se procesan antes de los conmutadores de línea de comandos que no sean-E o-I. es habitual que los conmutadores de línea de comando anulen las variables de entorno donde hay un conflicto.
PYTHONHOME
¶
cambie la ubicación de las bibliotecas estándar de Python., De forma predeterminada, las bibliotecas se buscan en prefix/lib/pythonversion
yexec_prefix/lib/pythonversion
, donde prefix
yexec_prefix
son directorios dependientes de la instalación, ambos de forma predeterminada a /usr/local
.
Cuando PYTHONHOME
se establece en un único directorio, su valor replacesboth prefix
y exec_prefix
. Para especificar diferentes valores para estos, establezca PYTHONHOME
a prefix:exec_prefix
.
PYTHONPATH
¶
aumente la ruta de búsqueda predeterminada para los archivos de módulo., El formato es el mismo que el del shell PATH
: una o más rutas de directorio separadas poros.pathsep
(por ejemplo, dos puntos en Unix o punto y coma en Windows).Los directorios inexistentes se ignoran silenciosamente.
además de los directorios normales, las entradas individuales PYTHONPATH
pueden referirse a archivos zip que contienen módulos Python puros (ya sea en forma fuente o compilada). Los módulos de extensión no se pueden importar desde zipfiles.,
la ruta de búsqueda predeterminada depende de la instalación, pero generalmente comienza conprefix/lib/pythonversion
(consulte PYTHONHOME
arriba). Siempre se añade a PYTHONPATH
.
se insertará un directorio adicional en la ruta de búsqueda delante dePYTHONPATH
como se describe anteriormente en las opciones de interfaz inferior. La ruta de búsqueda se puede manipular desde dentro de un programa Python como la variable sys.path
.
PYTHONPLATLIBDIR
¶
Si se establece una cadena no vacía, anula el sys.platlibdir
valor.,
nuevo en la versión 3.9.
PYTHONSTARTUP
¶
si este es el nombre de un archivo legible, los comandos de Python en ese archivo se ejecutarán antes de que se muestre el primer mensaje en modo interactivo. El archivo se ejecuta en el mismo espacio de nombres donde se ejecutan los comandos interactivos, de modo que los objetos definidos o importados en él se pueden usar sin calificación en la sesión interactiva. También puede cambiar las instrucciones de sys.ps1
ysys.ps2
y el gancho sys.__interactivehook__
en este archivo.,
genera un evento de auditoría cpython.run_startup
con el nombre del archivo como argumento cuando se llama al inicio.
PYTHONOPTIMIZE
¶
si esto se establece en una cadena no vacía es equivalente a especificar la opción-O
. Si se establece en un entero, es equivalente a especificar-O
varias veces.
PYTHONBREAKPOINT
¶
si se establece, nombra un invocable usando la notación de ruta punteada., El módulo que contiene el callable será importado y luego el callable será ejecutado por la implementación predeterminada de sys.breakpointhook()
que a su vez es llamado por built-in breakpoint()
. Si no se establece, o se establece en el emptystring, es equivalente al valor » pdb.set_trace». Establecer esto en el Tring «0»hace que la implementación predeterminada de sys.breakpointhook()
no haga más que regresar inmediatamente.
nuevo en la versión 3.7.,
PYTHONDEBUG
¶
si esto se establece en una cadena no vacía, es equivalente a especificar la opción-d
. Si se establece en un entero, es equivalente a especificar-d
varias veces.
PYTHONOLDPARSER
¶
Si se establece en una cadena no vacía, habilite el analizador tradicional LL(1).
vea también la opción -X
oldparser
y PEP 617.
obsoleto desde la versión 3.9, se eliminará en la versión 3.10.,
PYTHONINSPECT
¶
si esto se establece en una cadena no vacía, es equivalente a especificar la opción-i
.
Esta variable también puede ser modificada por código Python usando os.environ
para forzar el modo de inspección en la terminación del programa.
PYTHONUNBUFFERED
¶
si esto se establece en una cadena no vacía es equivalente a especificar la opción-u
.
PYTHONVERBOSE
¶
si esto se establece en una cadena no vacía es equivalente a especificar la opción-v
., Si se establece en un entero, es equivalente a especificar-v
varias veces.
PYTHONCASEOK
¶
Si esto está establecido, Python ignora el caso en las instrucciones import
. Esto solo funciona en Windows y OS X.
PYTHONDONTWRITEBYTECODE
¶
Si se establece en una cadena no vacía, Python no intentará escribir archivos .pyc
en la importación de Módulos fuente. Esto es equivalente a especificar la opción -B
.,
PYTHONPYCACHEPREFIX
¶
Si se establece, Python escribirá.pyc
archivos en un directorio mirror treeat esta ruta, en lugar de en__pycache__
directorios dentro del sourcetree. Esto es equivalente a especificar la etiqueta -X
pycache_prefix=PATH
opción.
nuevo en la versión 3.8.
PYTHONHASHSEED
¶
Si esta variable no se establece o se establece en random
, se utiliza un valor aleatorio para sembrar los hashes de los objetos str y bytes.,
si PYTHONHASHSEED
se establece en un valor entero, se usa como una semilla fija para generar el hash() de los tipos cubiertos por la hashrandomización.
Su propósito es permitir el hashing repetible, como para selftests para elinterpretador mismo, o para permitir que un clúster de procesos python comparta hashvalues.
El entero debe ser un número decimal en el rango . Especificando el valor 0 deshabilitará la aleatorización de hash.
nuevo en la versión 3.2.3.,
PYTHONIOENCODING
¶
Si se establece antes de ejecutar el intérprete, anula la codificación de realizar stdin/stdout/stderr, en la sintaxis encodingname:errorhandler
. Las partes encodingname
y :errorhandler
son opcionales y tienen el mismo significado que en str.encode()
.
para stderr, la parte :errorhandler
se ignora; el controlador siempre será'backslashreplace'
.
cambiado en la versión 3.4: la parte encodingname
ahora es opcional.
cambiado en la versión 3.,6: en Windows, la codificación especificada por esta variable se ignora para los búferes interactiveconsole a menos que también se especifique PYTHONLEGACYWINDOWSSTDIO
.Los archivos y canalizaciones redirigidos a través de los flujos estándar no se ven afectados.
PYTHONNOUSERSITE
¶
Si se establece, Python no agregar la etiqueta user site-packages directory
a sys.path
.,
Ver también
Pep 370 – por usuario site-packages directorio
PYTHONUSERBASE
¶
define el user base directory
, que se utiliza para calcular la ruta de acceso del user site-packages directory
y rutas de instalación de distutils parapython setup.py install --user
.
vea también
Pep 370 – Per user site-packages directory
PYTHONEXECUTABLE
¶
si se establece esta variable de entorno,sys.argv
se establecerá en itsvalue en lugar del valor obtenido a través del tiempo de ejecución de C. Solo funciona en Mac OS X.,
PYTHONWARNINGS
¶
Esto es equivalente a la etiqueta -W
opción. Si se establece en una cadena separada por comas, es equivalente a especificar -W
multipletimes, con filtros posteriores en la lista que tienen prioridad sobre los anteriores en la lista.
la configuración más simple aplica una acción particular incondicionalmente a todos los avisos emitidos por un proceso (incluso aquellos que de otra manera son ignorados por default):
PYTHONWARNINGS=default # Warn once per call locationPYTHONWARNINGS=error # Convert to exceptionsPYTHONWARNINGS=always # Warn every timePYTHONWARNINGS=module # Warn once per calling modulePYTHONWARNINGS=once # Warn once per Python processPYTHONWARNINGS=ignore # Never warn
vea el filtro de Advertencias y describiendo los filtros de advertencia para más detalles.,
PYTHONFAULTHANDLER
¶
Si esta variable de entorno se establece en una cadena no vacía,faulthandler.enable()
se llama en el inicio: instalar un controlador paraSIGSEGV
, SIGFPE
, SIGABRT
, SIGBUS
ySIGILL
señales para el volcado de los Python rastreabilidad. Esto es equivalente a-X
faulthandler
opción.
nuevo en la versión 3.3.,
PYTHONTRACEMALLOC
¶
si esta variable de entorno se establece en una cadena no vacía, inicie tracingPython asignaciones de memoria utilizando el módulo tracemalloc
. El valor de la variable es el número máximo de fotogramas almacenados en un traceback de atrace. Por ejemplo, PYTHONTRACEMALLOC=1
almacena solo el marco más reciente. Consulte tracemalloc.start()
para obtener más información.
nuevo en la versión 3.4.
PYTHONPROFILEIMPORTTIME
¶
si esta variable de entorno se establece en una cadena no vacía, Python mostrará el tiempo que tarda cada importación., Esto es exactamente equivalente a establecer-X importtime
en la línea de comandos.
nuevo en la versión 3.7.
PYTHONASYNCIODEBUG
¶
Si esta variable de entorno se establece en una cadena no vacía, habilite el modo de error del módulo asyncio
.
nuevo en la versión 3.4.
PYTHONMALLOC
¶
establezca los asignadores de memoria de Python y/o instale ganchos de depuración.,
establecer la familia de asignadores de memoria utilizados por Python:
Instalar hooks de depuración:
-
debug
: instalar hooks de depuración sobre los memoryallocators predeterminados. -
malloc_debug
: lo mismo quemalloc
pero también instala ganchos de depuración. -
pymalloc_debug
: lo mismo quepymalloc
pero también instala ganchos de depuración.
vea los asignadores de memoria predeterminados y la funciónPyMem_SetupDebugHooks()
(instale ganchos de depuración en los asignadores de Pythonmemory).
cambiado en la versión 3.,7: Añadido el asignador "default"
.
nuevo en la versión 3.6.
PYTHONMALLOCSTATS
¶
si se establece en una cadena no vacía, Python imprimirá las estadísticas del asignador de memoria pymalloc cada vez que se cree un nuevo objectarena pymalloc, y al apagarse.
Esta variable se ignora si la variable de entorno PYTHONMALLOC
se utiliza para forzar el asignador malloc()
de la biblioteca C, o si ifPython está configurado sin soporte pymalloc
.
cambiado en la versión 3.,6: Esta variable ahora también se puede usar en Python compilado en release mode.It ahora no tiene efecto si se establece en una cadena vacía.
PYTHONLEGACYWINDOWSFSENCODING
¶
si se establece en una cadena no vacía, la codificación predeterminada del sistema de archivos y el modo de errores volverán a sus valores anteriores a la 3.6 de ‘mbcs’ y ‘replace’, respectivamente.De lo contrario, se utilizan los nuevos valores predeterminados ‘utf-8’ y ‘surrogatepass’.
esto también se puede habilitar en tiempo de ejecución consys._enablelegacywindowsfsencoding()
.
disponibilidad: Windows.
nuevo en la versión 3.6: ver PEP 529 para más detalles.,
PYTHONLEGACYWINDOWSSTDIO
¶
Si se establece en una cadena no vacía, no utiliza el nuevo lector de consola andwriter. Esto significa que los caracteres Unicode se codificarán de acuerdo con la página de códigos de la consola activa, en lugar de usar utf-8.
Esta variable se ignora si los flujos estándar se redirigen (a archivos o tuberías) en lugar de referirse a buffers de consola.
disponibilidad: Windows.
nuevo en la versión 3.6.,
PYTHONCOERCECLOCALE
¶
Si se establece en el valor 0
, hace que la aplicación principal de línea de comandos de Python omita coaccionar las configuraciones regionales C y POSIX basadas en ASCII heredadas a una alternativa basada en UTF-8 más adaptable.,de lo contrario, la configuración regional basada explícitamente en ASCII POSIX
, entonces la CLI de Python intentará configurar las siguientes configuraciones regionales para la categoríaLC_CTYPE
en el orden indicado antes de cargar el interpreterruntime:
-
C.UTF-8
-
C.utf8
-
UTF-8
si el establecimiento de una de estas categorías de configuración regional tiene éxito, entonces la variable de entorno LC_CTYPE
se inicializa el entorno de proceso actual antes del tiempo de ejecución de Python., Esto asegura que además de ser visto tanto por el propio intérprete como por otros componentes de locale-awarecomponents que se ejecutan en el mismo proceso (como la biblioteca GNU readline
), la configuración actualizada también se ve en subprocesos (independientemente de si esos procesos están ejecutando un intérprete de Python), así como en operaciones que consultan el entorno en lugar de la configuración regional actual de C(como la propia locale.getdefaultlocale()
).,
configurar una de estas configuraciones regionales (ya sea explícitamente o a través de la coerción de configuración regional de eimplicit anterior) habilita automáticamente el controlador de errores surrogateescape
para sys.stdin
ysys.stdout
(sys.stderr
continúa usando backslashreplace
como lo hace en cualquier otra configuración regional). Este comportamiento de manejo de flujo se puede revertir usando PYTHONIOENCODING
como de costumbre.,
para fines de depuración, establecer PYTHONCOERCECLOCALE=warn
causará queepython emita mensajes de advertencia en stderr
si la coercion de la configuración regional se activa, o bien si una configuración regional que hubiera disparado la coerción sigue activa cuando se inicializa el tiempo de ejecución de Python.
también tenga en cuenta que incluso cuando la coerción de configuración regional está desactivada, o cuando no encuentra una configuración regional de destino adecuada, PYTHONUTF8
todavía activará bydefault en configuraciones regionales antiguas basadas en ASCII., Ambas características deben estar deshabilitadas Para forzar al intérprete a usar ASCII
en lugar de UTF-8
para las interfaces del sistema.
disponibilidad: *nix.
nuevo en la versión 3.7: ver PEP 538 para más detalles.
PYTHONDEVMODE
¶
si esta variable de entorno se establece en una cadena no vacía, enablePython modo de desarrollo, introduciendo runtimechecks adicionales que son demasiado caros para ser habilitados por defecto.
nuevo en la versión 3.7.,
PYTHONUTF8
¶
Si se establece en 1
, habilita el modo UTF-8 del intérprete, donde UTF-8
se utiliza como codificación de texto para las interfaces del sistema, independientemente de la configuración regional actual.
Esto significa que:
sys.getfilesystemencoding()
devuelve'UTF-8'
(el localeencoding es ignorado).
locale.getpreferredencoding()
devuelve'UTF-8'
(el localeencoding se ignora, y de la funcióndo_setlocale
parámetro tiene noeffect).,F-8 como su codificación de texto, con el controlador de erroressurrogateescape
habilitado parasys.stdin
ysys.stdout
(sys.stderr
continúa utilizandobackslashreplace
al igual que en el modo predeterminado compatible con la configuración regional)
como consecuencia de los cambios en esas API de nivel inferior, otras API de nivel superior también muestran diferentes comportamientos predeterminados:
los argumentos de la línea de comandos, las variables de entorno y los nombres de archivo se decodifican en texto utilizando la codificación UTF-8.,
os.fsdecode()
yos.fsencode()
usar la codificación UTF-8.
open()
,io.open()
ycodecs.open()
usar la codificación UTF-8encoding por defecto. Sin embargo, todavía utilizan el controlador de errores estricto bydefault de modo que intentar abrir un archivo binario en modo texto es probable que genere una excepción en lugar de producir datos sin sentido.,
tenga en cuenta que la configuración de flujo estándar en el modo UTF-8 puede ser anulada porPYTHONIOENCODING
(al igual que puede ser en el modo de configuración regional predeterminado-awaremode).
si se establece en 0
, el intérprete se ejecuta en su modo predeterminado de configuración regional.
establecer cualquier otra cadena no vacía causa un error durante la inicialización de la interpretación.,
si esta variable de entorno no está establecida en absoluto, el intérprete debe usar la configuración regional actual, a menos que la configuración regional actual se identifique como una configuración regional heredada basada en ASCII(como se describe para PYTHONCOERCECLOCALE
), y la coerción regional esté deshabilitada o falle. En tales configuraciones regionales heredadas, el intérprete activará de forma predeterminada el modo UTF-8 a menos que se le indique explícitamente que no lo haga.
También disponible como -X
utf8
opción.
nuevo en la versión 3.7: ver PEP 540 para más detalles.
1.2.1., Variables de modo de depuración¶
establecer estas variables solo tiene un efecto en una compilación de depuración de Python.
PYTHONTHREADDEBUG
¶
Si se establece, Python imprimirá información de depuración de subprocesos.
Necesita Python configurado con la opción de compilación --with-pydebug
.
PYTHONDUMPREFS
¶
Si se establece, Python volcará los objetos y los recuentos de referencia aún vivos después de apagar el intérprete.
Necesita Python configurado con la opción de compilación--with-trace-refs
.