1. Línea de comandos y entorno

El intérprete de CPython analiza la línea de comandos y el entorno en busca de varias configuraciones.

Detalles de implementación de CPython: Los esquemas de línea de comandos de otras implementaciones pueden diferir. Véase Implementaciones alternativas para obtener más recursos.

1.1. Línea de comando

Al invocar Python, puede especificar cualquiera de estas opciones:

python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]

El caso de uso más común es, por supuesto, una simple invocación de un script:

python myscript.py

1.1.1. Opciones de interfaz

La interfaz del intérprete es similar a la del shell UNIX, pero proporciona algunos métodos adicionales de invocación:

  • Cuando se llama con entrada estándar conectada a un dispositivo tty, solicita comandos y los ejecuta hasta que se lea un EOF (un carácter de fin de archivo, puede producirlo con Ctrl-D en UNIX o Ctrl-Z, Enter en Windows).

  • Cuando se llama con un argumento de nombre de archivo o con un archivo como entrada estándar, lee y ejecuta un script de ese archivo.

  • Cuando se llama con un argumento de nombre de directorio, lee y ejecuta un script con el nombre adecuado desde ese directorio.

  • Cuando se llama con -c comando, ejecuta las instrucciones de Python dadas como command. Aquí comando puede contener varias instrucciones separadas por nuevas líneas. ¡El espacio en blanco principal es significativo en las instrucciones de Python!

  • Cuando se llama con -m module-name, el módulo dado se encuentra en la ruta del módulo Python y se ejecuta como un script.

En el modo no interactivo, toda la entrada se analiza antes de ejecutarse.

Una opción de interfaz termina la lista de opciones consumidas por el intérprete, todos los argumentos consecutivos terminarán en sys.argv – tenga en cuenta que el primer elemento, subíndice cero (sys.argv[0]), es una cadena que refleja el origen del programa.

-c <command>

Ejecute el código de Python en comando. comando puede ser una o más sentencias separadas por nuevas líneas, con espacio en blanco inicial significativo como en el código normal del módulo.

Si se proporciona esta opción, el primer elemento de sys.argv será "-c" y el directorio actual se agregará al inicio de sys.path (permitiendo que los módulos de ese directorio se importen como módulos de nivel superior).

Lanza un auditing event cpython.run_command con el argumento command.

-m <module-name>

Busque sys.path para el módulo con nombre y ejecute su contenido como el módulo __main__.

Dado que el argumento es un nombre módulo, no debe dar una extensión de archivo (.py). El nombre del módulo debe ser un nombre de módulo Python absoluto válido, pero es posible que la implementación no siempre lo aplique (por ejemplo, puede permitirle usar un nombre que incluya un guión).

También se permiten los nombres de paquetes (incluidos los paquetes de espacio de nombres). Cuando se proporciona un nombre de paquete en lugar de un módulo normal, el intérprete ejecutará <pkg>.__main__ como módulo principal. Este comportamiento es deliberadamente similar al manejo de directorios y archivos zip que se pasan al intérprete como argumento del script.

Nota

Esta opción no se puede utilizar con módulos integrados y módulos de extensión escritos en C, ya que no tienen archivos de módulo Python. Sin embargo, todavía se puede utilizar para módulos precompilados, incluso si el archivo de origen original no está disponible.

Si se da esta opción, el primer elemento de sys.argv será la ruta de acceso completa al archivo de módulo (mientras se encuentra el archivo de módulo, el primer elemento se establecerá en "-m"). Al igual que con la opción -c, el directorio actual se agregará al inicio de sys.path.

-I option can be used to run the script in isolated mode where sys.path contains neither the current directory nor the user’s site-packages directory. All PYTHON* environment variables are ignored, too.

Muchos módulos de biblioteca estándar contienen código que se invoca en su ejecución como script. Un ejemplo es el módulo timeit:

python -m timeit -s "setup here" "benchmarked code here"
python -m timeit -h # for details

Retorna un auditing event cpython.run_module con el argumento nombre-módulo.

Ver también

runpy.run_module()

Funcionalidad equivalente directamente disponible para el código Python

PEP 338 – Ejecución de módulos como scripts

Distinto en la versión 3.1: Proporcione el nombre del paquete para ejecutar un submódulo __main__.

Distinto en la versión 3.4: paquetes de espacio de nombres también son compatibles

-

Leer comandos de entrada estándar (sys.stdin). Si la entrada estándar es un terminal, -i está implícita.

Si se da esta opción, el primer elemento de sys.argv será "-" y el directorio actual se agregará al inicio de sys.path.

Lanza un evento auditing event cpython.run_stdin sin argumentos.

<script>

Ejecute el código Python contenido en script, que debe ser una ruta de acceso del sistema de archivos (absoluta o relativa) que haga referencia a un archivo Python, un directorio que contenga un archivo __main__.py o un archivo zip que contenga un archivo __main__.py.

Si se proporciona esta opción, el primer elemento de sys.argv será el nombre del script como se indica en la línea de comandos.

Si el nombre del script hace referencia directamente a un archivo Python, el directorio que contiene ese archivo se agrega al inicio de sys.path, y el archivo se ejecuta como el módulo __main__.

Si el nombre del script hace referencia a un directorio o zipfile, el nombre del script se agrega al inicio de sys.path y el archivo __main__.py en esa ubicación se ejecuta como el módulo __main__.

-I option can be used to run the script in isolated mode where sys.path contains neither the script’s directory nor the user’s site-packages directory. All PYTHON* environment variables are ignored, too.

Lanza un auditing event cpython.run_file con el argumento filename.

Ver también

runpy.run_path()

Funcionalidad equivalente directamente disponible para el código Python

Si no se da ninguna opción de interfaz, -i está implícita, sys.argv[0] es una cadena vacía (") y el directorio actual se agregará al inicio de sys.path. Además, la finalización de tabulación y la edición del historial se habilitan automáticamente, si están disponibles en su plataforma (consulte Configuración de Readline).

Ver también

Invocar el intérprete

Distinto en la versión 3.4: Habilitación automática de la finalización de pestañas y edición del historial.

1.1.2. Opciones genéricas

-?
-h
--help

Imprime una breve descripción de todas las opciones de la línea de comandos.

--help-env

Imprima una breve descripción de las variables de entorno específicas de Python y salga.

Nuevo en la versión 3.11.

--help-xoptions

Imprima una descripción de las opciones -X específicas de la implementación y salga.

Nuevo en la versión 3.11.

--help-all

Imprima información completa de uso y salga.

Nuevo en la versión 3.11.

-V
--version

Imprima el número de versión de Python y salga. Ejemplo de salida podría ser:

Python 3.8.0b2+

Cuando se le dé dos veces, imprima más información sobre la compilación, como:

Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00)
[GCC 6.2.0 20161005]

Nuevo en la versión 3.6: La opción -VV.

1.1.3. Opciones diversas

-b

Issue a warning when converting bytes or bytearray to str without specifying encoding or comparing bytes or bytearray with str or bytes with int. Issue an error when the option is given twice (-bb).

Distinto en la versión 3.5: Affects also comparisons of bytes with int.

-B

Si se da, Python no intentará escribir archivos .pyc en la importación de módulos de origen. Véase también PYTHONDONTWRITEBYTECODE.

--check-hash-based-pycs default|always|never

Controle el comportamiento de validación de los archivos .pyc basados en hash. Véase Invalidación del código de bytes en caché. Cuando se establece en default, los archivos de caché de código de bytes basados en hash marcados y desmarcados se validan según su semántica predeterminada. Cuando se establece en always, todos los archivos basados en hash .pyc, ya estén marcados o desmarcados, se validan con su archivo de origen correspondiente. Cuando se establece en never, los archivos basados en hash .pyc no se validan con sus archivos de origen correspondientes.

Esta opción no afecta a la semántica de los archivos .pyc basados en la marca de tiempo.

-d

Activa la salida de depuración (solo para expertos, dependiendo de las opciones de compilación). Véase también la variable de ambiente PYTHONDEBUG.

Esta opción necesita una compilación de depuración de Python, de lo contrario será ignorado.

-E

Ignore all PYTHON* environment variables, e.g. PYTHONPATH and PYTHONHOME, that might be set.

Véase también las opciones -P e -I (aisladas).

-i

Cuando se pasa un script como primer argumento o se utiliza la opción -c, entre en modo interactivo después de ejecutar el script o el comando, incluso cuando sys.stdin no parece ser un terminal. El archivo PYTHONSTARTUP no se lee.

Esto puede ser útil para inspeccionar variables globales o un seguimiento de pila cuando un script lanza una excepción. Véase también PYTHONINSPECT.

-I

Ejecute Python en modo aislado. Esto también implica las opciones -E, -P y -s.

In isolated mode sys.path contains neither the script’s directory nor the user’s site-packages directory. All PYTHON* environment variables are ignored, too. Further restrictions may be imposed to prevent the user from injecting malicious code.

Nuevo en la versión 3.4.

-O

Quite las instrucciones assert y cualquier código condicionado al valor de __debug__. Aumente el nombre de archivo para los archivos compilados (bytecode) agregando .opt-1 antes de la extensión .pyc (consulte PEP 488). Véase también PYTHONOPTIMIZE.

Distinto en la versión 3.5: Modifique los nombres de archivo .pyc según PEP 488.

-OO

Haga -O y también deseche las docstrings. Aumente el nombre de archivo para los archivos compilados (bytecode) agregando .opt-2 antes de la extensión .pyc (consulte PEP 488).

Distinto en la versión 3.5: Modifique los nombres de archivo .pyc según PEP 488.

-P

No anteponga una ruta potencialmente insegura a sys.path:

  • python -m module command line: No anteponga el directorio de trabajo actual.

  • python script.py command line: No anteponga el directorio del script. Si es un enlace simbólico, resuelva los enlaces simbólicos.

  • python -c code y python (REPL) command lines: No anteponga una cadena vacía, lo que significa el directorio de trabajo actual.

Consulte también la variable de entorno PYTHONSAFEPATH y las opciones -E y -I (aisladas).

Nuevo en la versión 3.11.

-q

No muestres los mensajes de copyright y versión incluso en modo interactivo.

Nuevo en la versión 3.2.

-R

Active la aleatorización de hash. Esta opción solo tiene efecto si la variable de entorno PYTHONHASHSEED está establecida en 0, ya que la aleatorización de hash está habilitada de forma predeterminada.

On previous versions of Python, this option turns on hash randomization, so that the __hash__() values of str and bytes objects are «salted» with an unpredictable random value. Although they remain constant within an individual Python process, they are not predictable between repeated invocations of Python.

Hash randomization is intended to provide protection against a denial-of-service caused by carefully chosen inputs that exploit the worst case performance of a dict construction, O(n2) complexity. See http://ocert.org/advisories/ocert-2011-003.html for details.

PYTHONHASHSEED le permite establecer un valor fijo para el secreto de inicialización hash.

Nuevo en la versión 3.2.3.

Distinto en la versión 3.7: La opción ya no se omite.

-s

No agregue el user site-packages directory a sys.path.

See also PYTHONNOUSERSITE.

Ver también

PEP 370 – Directorio de paquetes de sitio por usuario

-S

Deshabilite la importación del módulo site y las manipulaciones dependientes del sitio de sys.path que conlleva. También deshabilite estas manipulaciones si site se importa explícitamente más tarde (llame a site.main() si desea que se activen).

-u

Forzar que las corrientes stdout y stderr no estén en búfer. Esta opción no tiene ningún efecto en la secuencia stdin.

Véase también PYTHONUNBUFFERED.

Distinto en la versión 3.7: La capa de texto de las secuencias stdout y stderr ahora no está en búfer.

-v

Imprime un mensaje cada vez que se inicialice un módulo, mostrando el lugar (nombre de archivo o módulo integrado) desde el que se carga. Cuando se le pasa dos veces (-vv), imprime un mensaje para cada archivo que se comprueba al buscar un módulo. También proporciona información sobre la limpieza del módulo en la salida.

Distinto en la versión 3.10: El módulo site informa las rutas específicas del sitio y los archivos .pth que se están procesando.

Véase también PYTHONVERBOSE.

-W arg

Control de advertencia. La maquinaria de advertencia de Python por defecto imprime mensajes de advertencia en sys.stderr.

La configuración más sencilla aplica una acción determinada incondicionalmente a todas las advertencias emitidas por un proceso (incluso aquellas que de otro modo se ignoran de forma predeterminada):

-Wdefault  # Warn once per call location
-Werror    # Convert to exceptions
-Walways   # Warn every time
-Wmodule   # Warn once per calling module
-Wonce     # Warn once per Python process
-Wignore   # Never warn

Los nombres de acción se pueden abreviar como se desee y el intérprete los resolverá con el nombre de acción adecuado. Por ejemplo, -Wi es lo mismo que -Wignore.

La forma completa del argumento es:

action:message:category:module:lineno

Los campos vacíos cuadran con todos los valores; los campos vacíos finales pueden omitirse. Por ejemplo, -W ignore::DeprecationWarning ignora todas las advertencias de DeprecationWarning.

El campo action es como se explicó anteriormente, pero solo se aplica a las advertencias que coinciden con los campos restantes.

El campo message debe coincidir con el mensaje de advertencia completo; esta coincidencia no distingue entre mayúsculas y minúsculas.

El campo category coincide con la categoría de advertencia (por ej. DeprecationWarning). Debe ser un nombre de clase; la coincidencia prueba si la categoría de advertencia real del mensaje es una subclase de la categoría de advertencia especificada.

El campo module coincide con el nombre de dominio completo del módulo; esta coincidencia distingue entre mayúsculas y minúsculas.

El campo lineno coincide con el número de línea, donde cero corresponde a todos los números de línea y, por lo tanto, es equivalente a número de línea omitido.

Se pueden dar varias opciones -W; cuando una advertencia coincide con más de una opción, se realiza la acción para la última opción de coincidencia. Las opciones invalidas -W son ignoradas (aunque se imprime un mensaje de advertencia sobre opciones no válidas cuando se emite la primera advertencia).

Las advertencias también se pueden controlar utilizando la variable de entorno PYTHONWARNINGS y desde un programa Python utilizando el módulo warnings. Por ejemplo, la función warnings.filterwarnings() puede ser usarse con una expresión regular en el mensaje de advertencia.

Consulte El filtro de advertencias y Descripción de los filtros de advertencia para obtener más detalles.

-x

Omita la primera línea de la fuente, permitiendo el uso de formas que no sean de Unix de #!cmd. Esto está destinado a un hackeo específico de DOS solamente.

-X

Reservado para varias opciones específicas de la implementación. CPython define actualmente los siguientes valores posibles:

  • -X faulthandler para habilitar faulthandler. Véase PYTHONFAULTHANDLER para obtener más información.

    Nuevo en la versión 3.3.

  • -X showrefcount para generar el recuento total de referencias y el número de bloques de memoria utilizados cuando finalice el programa o después de cada instrucción en el intérprete interactivo. Esto sólo funciona en compilaciones de depuración.

    Nuevo en la versión 3.4.

  • -X tracemalloc para iniciar el seguimiento de las asignaciones de memoria de Python mediante el módulo tracemalloc. De forma predeterminada, solo el marco más reciente se almacena en un seguimiento de un seguimiento. Utilice -X tracemalloc=NFRAME para iniciar el seguimiento con un límite de rastreo de marcos NFRAME. Consulte el tracemalloc.start() y PYTHONTRACEMALLOC para obtener más información.

    Nuevo en la versión 3.4.

  • -X int_max_str_digits configura la limitación de longitud de conversión de cadena de tipo entero. Véase también PYTHONINTMAXSTRDIGITS.

    Nuevo en la versión 3.11.

  • -X importtime para mostrar cuánto tiempo tarda cada importación. Muestra el nombre del módulo, el tiempo acumulado (incluidas las importaciones anidadas) y el tiempo de autoestima (excluyendo las importaciones anidadas). Tenga en cuenta que su salida puede romperse en aplicaciones multiproceso. El uso típico es python3 -X importtime -c 'import asyncio'. Véase también PYTHONPROFILEIMPORTTIME.

    Nuevo en la versión 3.7.

  • -X dev: enable Python Development Mode, introducing additional runtime checks that are too expensive to be enabled by default. See also PYTHONDEVMODE.

    Nuevo en la versión 3.7.

  • -X utf8 habilita el modo Python UTF-8. -X utf8=0 desactiva explícitamente el modo Python UTF-8 (incluso cuando al contrario se activaría automáticamente). Véase PYTHONUTF8.

    Nuevo en la versión 3.7.

  • -X pycache_prefix=PATH permite escribir archivos .pyc en un árbol paralelo enraizado en el directorio dado en lugar de en el árbol de código. Véase también PYTHONPYCACHEPREFIX.

    Nuevo en la versión 3.8.

  • -X warn_default_encoding emite un EncodingWarning cuando se usa la codificación predeterminada específica de la configuración regional para abrir archivos. Vea también PYTHONWARNDEFAULTENCODING.

    Nuevo en la versión 3.10.

  • -X no_debug_ranges deshabilita la inclusión de tablas que asignan información de ubicación adicional (línea final, desplazamiento de columna inicial y desplazamiento de columna final) a cada instrucción en los objetos de código. Esto es útil cuando se desean objetos de código más pequeños y archivos pyc, además de suprimir los indicadores de ubicación visuales adicionales cuando el intérprete muestra rastreos. Véase también PYTHONNODEBUGRANGES.

    Nuevo en la versión 3.11.

  • -X frozen_modules determina si la maquinaria de importación ignora o no los módulos congelados. Un valor «on» significa que se importan y «off» significa que se ignoran. El valor predeterminado es «on» si se trata de un Python instalado (el caso normal). Si está en desarrollo (ejecutándose desde el árbol de fuentes), entonces el valor predeterminado es «off». Tenga en cuenta que los módulos congelados «importlib_bootstrap» e «importlib_bootstrap_external» siempre se utilizan, incluso si este indicador está configurado en «off».

    Nuevo en la versión 3.11.

  • -X perf habilita el soporte para el perfilador perf de Linux. Cuando se proporciona esta opción, el perfilador perf podrá informar llamadas de Python. Esta opción sólo está disponible en algunas plataformas y no hará nada si no es compatible con el sistema actual. El valor predeterminado es «off». Consulte también PYTHONPERFSUPPORT y Soporte de Python para el perfilador perf de Linux.

    Nuevo en la versión 3.12.

También permite pasar valores arbitrarios y recuperarlos a través del diccionario sys._xoptions.

Nuevo en la versión 3.2.

Distinto en la versión 3.9: Removed the -X showalloccount option.

Distinto en la versión 3.10: Removed the -X oldparser option.

1.1.4. Opciones que no se deben usar

-J

Reservado para su uso por Jython.

1.2. Variables de entorno

Estas variables de entorno influyen en el comportamiento de Python, se procesan antes de que los modificadores de línea de comandos distintos de -E o -I. Es habitual que los modificadores de línea de comandos anulen 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 y exec_prefix/lib/pythonversion, donde prefix y exec_prefix son directorios dependientes de la instalación, ambos predeterminados /usr/local.

Cuando PYTHONHOME se establece en un único directorio, su valor reemplaza tanto al prefix como a exec_prefix. Para especificar valores diferentes para estos, establezca PYTHONHOME en prefix:exec_prefix.

PYTHONPATH

Aumente la ruta de búsqueda predeterminada para los archivos de módulo. El formato es el mismo que el de shell PATH: uno o más nombres de ruta de directorio separados por os.pathsep (por ejemplo, dos puntos en Unix o punto y coma en Windows). Los directorios inexistentes se omiten 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 de origen o compilado). 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 con prefix/lib/pythonversion (consulte PYTHONHOME arriba). Es always anexado a PYTHONPATH.

Se insertará un directorio adicional en la ruta de búsqueda delante de PYTHONPATH como se describió anteriormente en Opciones de interfaz. La ruta de búsqueda se puede manipular desde un programa Python como la variable sys.path.

PYTHONSAFEPATH

Si se establece en una cadena no vacía, no anteponga una ruta potencialmente insegura a sys.path: véase la opción -u para más información.

Nuevo en la versión 3.11.

PYTHONPLATLIBDIR

Si se establece en una cadena no vacía, anula el valor sys.platlibdir.

Nuevo en la versión 3.9.

PYTHONSTARTUP

Si este es el nombre de un archivo legible, los comandos de Python de ese archivo se ejecutan antes de que el primer mensaje se muestre en modo interactivo. El archivo se ejecuta en el mismo espacio de nombres donde se ejecutan comandos interactivos para que los objetos definidos o importados en él se puedan usar sin calificación en la sesión interactiva. También puede cambiar las solicitudes sys.ps1 y sys.ps2 y el enlace sys.__interactivehook__ en este archivo.

Lanza auditing event cpython.run_startup con el argumento filename.

PYTHONOPTIMIZE

Si se establece en una cadena no vacía, equivale 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 nombre que se puede llamar mediante la notación de trayecto de puntos. El módulo que contiene el invocable se importará y, a continuación, el invocable se ejecutará por la implementación predeterminada de sys.breakpointhook() que a su vez se llama por incorporado breakpoint(). Si no se establece o se establece en la cadena vacía, es equivalente al valor «pdb.set_trace». Establecer esto en la cadena «0» hace que la implementación predeterminada de sys.breakpointhook() no haga nada más que retornar inmediatamente.

Nuevo en la versión 3.7.

PYTHONDEBUG

Si se establece en una cadena no vacía, equivale a especificar la opción -d. Si se establece en un entero, equivale a especificar -d varias veces.

Esta variable de entorno necesita una compilación de depuración de Python, de lo contrario será ignorada.

PYTHONINSPECT

Si se establece en una cadena no vacía, equivale a especificar la opción -i.

Esta variable también se puede modificar mediante código Python mediante os.environ para forzar el modo de inspección en la terminación del programa.

PYTHONUNBUFFERED

Si se establece en una cadena no vacía, equivale a especificar la opción -u.

PYTHONVERBOSE

Si se establece en una cadena no vacía, equivale a especificar la opción -v. Si se establece en un entero, equivale a especificar -v varias veces.

PYTHONCASEOK

Si se establece, Python omite mayúsculas y minúsculas en las instrucciones import. Esto sólo funciona en Windows y macOS.

PYTHONDONTWRITEBYTECODE

Si se establece en una cadena no vacía, Python no intentará escribir archivos .pyc en la importación de módulos de origen. Esto equivale a especificar la opción -B.

PYTHONPYCACHEPREFIX

Si se establece, Python escribirá archivos .pyc en un árbol de directorios reflejado en esta ruta de acceso, en lugar de en directorios __pycache__ dentro del árbol de origen. Esto equivale a especificar la opción -X pycache_prefix=PATH.

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 utiliza como una semilla fija para generar el hash() de los tipos cubiertos por la aleatorización hash.

Su propósito es permitir el hash repetible, como para las autocomprobaciónes para el propio intérprete, o permitir que un grupo de procesos python comparta valores hash.

El entero debe ser un número decimal en el intervalo [0,4294967295]. Especificar el valor 0 deshabilitará la aleatorización de hash.

Nuevo en la versión 3.2.3.

PYTHONINTMAXSTRDIGITS

Si esta variable se establece en un número entero, se utiliza para configurar la limitación de longitud de conversión de cadena entera.

Nuevo en la versión 3.11.

PYTHONIOENCODING

Si se establece antes de ejecutar el intérprete, invalida la codificación utilizada para stdin/stdout/stderr, en la sintaxis encodingname:errorhandler. Tanto las partes encodingname como :errorhandler son opcionales y tienen el mismo significado que en str.encode().

Para stderr, se omite la parte :errorhandler; el manejador siempre será 'backslashreplace'.

Distinto en la versión 3.4: La parte encodingname ahora es opcional.

Distinto en la versión 3.6: En Windows, la codificación especificada por esta variable se omite para los búferes de consola interactivos a menos que también se especifique PYTHONLEGACYWINDOWSSTDIO. Los archivos y canalizaciones redirigidos a través de las corrientes estándar no se ven afectados.

PYTHONNOUSERSITE

Si se establece, Python no agregará user site-packages directory a sys.path.

Ver también

PEP 370 – Directorio de paquetes de sitio por usuario

PYTHONUSERBASE

Define el user base directory, que se utiliza para calcular la ruta de acceso de user site-packages directory y installation paths para python -m pie install --user.

Ver también

PEP 370 – Directorio de paquetes de sitio por usuario

PYTHONEXECUTABLE

Si se establece esta variable de entorno, sys.argv[0] se establecerá en su valor en lugar del valor conseguido a través del tiempo de ejecución de C. Sólo funciona en macOS.

PYTHONWARNINGS

Esto es equivalente a la opción -W. Si se establece en una cadena separada por comas, es equivalente a especificar -W varias veces, con filtros más adelante en la lista que tienen prioridad sobre los anteriores de la lista.

La configuración más sencilla aplica una acción determinada incondicionalmente a todas las advertencias emitidas por un proceso (incluso aquellas que de otro modo se ignoran de forma predeterminada):

PYTHONWARNINGS=default  # Warn once per call location
PYTHONWARNINGS=error    # Convert to exceptions
PYTHONWARNINGS=always   # Warn every time
PYTHONWARNINGS=module   # Warn once per calling module
PYTHONWARNINGS=once     # Warn once per Python process
PYTHONWARNINGS=ignore   # Never warn

Consulte El filtro de advertencias y Descripción de los filtros de advertencia para obtener más detalles.

PYTHONFAULTHANDLER

If this environment variable is set to a non-empty string, faulthandler.enable() is called at startup: install a handler for SIGSEGV, SIGFPE, SIGABRT, SIGBUS and SIGILL signals to dump the Python traceback. This is equivalent to -X faulthandler option.

Nuevo en la versión 3.3.

PYTHONTRACEMALLOC

Si esta variable de entorno se establece en una cadena no vacía, comience a trazar las asignaciones de memoria de Python mediante el módulo tracemalloc. El valor de la variable es el número máximo de marcos almacenados en un rastreo de un seguimiento. Por ejemplo, PYTHONTRACEMALLOC=1 almacena sólo el marco más reciente. Consulte la función tracemalloc.start() para obtener más información. Esto equivale a configurar la opción -X tracemalloc.

Nuevo en la versión 3.4.

PYTHONPROFILEIMPORTTIME

Si esta variable de entorno se establece en una cadena no vacía, Python mostrará cuánto tiempo tarda cada importación. Esto equivale exactamente 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 debug mode del módulo asyncio.

Nuevo en la versión 3.4.

PYTHONMALLOC

Establezca los asignadores de memoria de Python y/o instale enlaces de depuración.

Establezca la familia de asignadores de memoria utilizados por Python:

Instalar enlaces de depuración:

  • debug: instale los enlaces de depuración encima de default memory allocators.

  • malloc_debug: igual que malloc pero también instalar ganchos de depuración.

  • pymalloc_debug: igual que pymalloc pero también instalar enlaces de depuración.

Nuevo en la versión 3.6.

Distinto en la versión 3.7: Se ha añadido el asignador "predeterminado".

PYTHONMALLOCSTATS

Si se establece en una cadena no vacía, Python imprimirá estadísticas de pymalloc memory allocator cada vez que se crea una nueva arena de objetos pymalloc y al apagarse.

Esta variable se omite si la variable de entorno PYTHONMALLOC se utiliza para forzar el asignador malloc() de la biblioteca C, o si Python está configurado sin compatibilidad con pymalloc.

Distinto en la versión 3.6: Esta variable ahora también se puede utilizar en Python compilado en modo de versión. Ahora no tiene ningún efecto si se establece en una cadena vacía.

PYTHONLEGACYWINDOWSFSENCODING

Si se establece en una cadena no vacía, el filesystem encoding and error handler predeterminado volverá a sus valores pre-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 con sys._enablelegacywindowsfsencoding().

Availability: Windows.

Nuevo en la versión 3.6: Consulte PEP 529 para obtener más detalles.

PYTHONLEGACYWINDOWSSTDIO

Si se establece en una cadena no vacía, no utiliza el nuevo lector y escritor de consola. 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 omite si se redirigen las secuencias estándar (a archivos o canalizaciones) en lugar de hacer referencia a búferes de consola.

Availability: 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 la coerción de las configuraciones regionales C y POSIX basadas en ASCII heredadas a una alternativa basada en UTF-8 más capaz.

Si esta variable es no establecida (o se establece en un valor distinto de 0), tampoco se establece la variable de entorno de invalidación local LC_ALL, y la configuración local actual notificada para la categoría LC_CTYPE es la configuración local C predeterminada, o bien la configuración local basada explícitamente en ASCII POSIX, entonces la CLI de Python intentará configurar las siguientes configuraciones locales para la categoría LC_CTYPE en el orden indicado antes de cargar el tiempo de ejecución del intérprete:

  • C.UTF-8

  • C.utf8

  • UTF-8

Si la configuración de una de estas categorías de configuración local se realiza correctamente, la variable de entorno LC_CTYPE también se establecerá en consecuencia en el entorno de proceso actual antes de que se inicialice el tiempo de ejecución de Python. Esto garantiza que, además de ser visto tanto por el propio intérprete como por otros componentes compatibles con la configuración local que se ejecutan en el mismo proceso (como la biblioteca GNU readline), la configuración actualizada también se ve en los subprocesos (independientemente de si esos procesos están ejecutando o no un intérprete de Python), así como en las operaciones que consultan el entorno en lugar de la configuración regional de C actual (como la propia de Python locale.getdefaultlocale()).

La configuración de una de estas configuraciones regionales (ya sea explícitamente o a través de la coerción de configuración regional implícita anterior) habilita automáticamente el surrogateescape error handler para sys.stdin y sys.stdout (sys.stderr continúa utilizando backslashreplace como lo hace en cualquier otra configuración local). Este comportamiento de control de secuencias se puede invalidar mediante PYTHONIOENCODING como de costumbre.

Para fines de depuración, establecer PYTHONCOERCECLOCALE-warn hará que Python emita mensajes de advertencia en stderr si se activa la coerción de configuración regional, o si una configuración regional que would ha activado 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 puede encontrar una configuración regional de destino adecuada, PYTHONUTF8 se activará de forma predeterminada en las configuraciones regionales heredadas basadas en ASCII. Ambas funciones deben estar deshabilitadas para obligar al intérprete a usar ASCII en lugar de UTF-8 para las interfaces del sistema.

Availability: Unix.

Nuevo en la versión 3.7: Consulte PEP 538 para obtener más detalles.

PYTHONDEVMODE

Si esta variable de entorno se establece en una cadena no vacía, habilite Python Development Mode, introduciendo comprobaciones de tiempo de ejecución adicionales que son demasiado caras para habilitarse de forma predeterminada. Esto equivale a configurar la opción -X dev.

Nuevo en la versión 3.7.

PYTHONUTF8

Si se establece en 1, habilita el modo Python UTF-8.

Si se establece en 0, deshabilita el modo Python UTF-8.

Establecer cualquier otra cadena no vacía produce un error durante la inicialización del intérprete.

Nuevo en la versión 3.7.

PYTHONWARNDEFAULTENCODING

Si esta variable de entorno se establece como una cadena de caracteres no vacía, emite un EncodingWarning cuando se utilice la codificación predeterminada específica de la configuración regional.

Ver EncodingWarning opcional para más detalles.

Nuevo en la versión 3.10.

PYTHONNODEBUGRANGES

Si se establece esta variable, deshabilita la inclusión de tablas que asignan información de ubicación adicional (línea final, desplazamiento de columna inicial y desplazamiento de columna final) a cada instrucción en los objetos de código. Esto es útil cuando se desean objetos de código más pequeños y archivos pyc, además de suprimir los indicadores de ubicación visuales adicionales cuando el intérprete muestra rastreos.

Nuevo en la versión 3.11.

PYTHONPERFSUPPORT

Si esta variable se establece en un valor distinto de cero, habilita la compatibilidad con el perfilador perf de Linux para que pueda detectar las llamadas de Python.

Si se establece en 0, deshabilite la compatibilidad con el generador de perfiles perf de Linux.

Consulte también la opción de línea de comandos -X perf y Soporte de Python para el perfilador perf de Linux.

Nuevo en la versión 3.12.

1.2.1. Variables de modo de depuración

PYTHONDUMPREFS

Si se establece, Python volcará objetos y recuentos de referencias aún vivos después de apagar el intérprete.

Necesita Python configurado con la opción de compilación --with-trace-refs.

PYTHONDUMPREFSFILE=FILENAME

Si se establece, Python volcará objetos y recuentos de referencias aún vivos después de apagar el intérprete en un archivo llamado FILENAME.

Necesita Python configurado con la opción de compilación --with-trace-refs.

Nuevo en la versión 3.11.