1. Ligne de commande et environnement

L'interpréteur CPython analyse la ligne de commande et l'environnement à la recherche de différents paramètres.

Particularité de l'implémentation CPython : Le format des lignes de commande utilisé par d'autres implémentations peut s'avérer différent. Voir Autres implémentations pour plus d'informations.

1.1. Ligne de commande

Quand vous invoquez Python, vous pouvez spécifier n’importe laquelle de ces options :

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

Le cas d'utilisation le plus courant est, bien entendu, la simple invocation d'un script :

python myscript.py

1.1.1. Options de l'interface

L'interface de l’interpréteur ressemble à celle du shell UNIX mais fournit quelques méthodes d'invocation supplémentaires :

  • Quand l'interpréteur est appelé avec l'entrée standard connectée à un périphérique tty, il lit les lignes de commande et les exécute jusqu'à ce qu'un caractère EOF (caractère fin de fichier, que vous pouvez produire avec Ctrl-D sous UNIX ou Ctrl-Z, Enter sous Windows) soit lu.

  • Quand l'interpréteur est appelé avec un argument correspondant à un nom de fichier ou avec un fichier comme entrée standard, il lit et exécute le script contenu dans ce fichier.

  • Quand l'interpréteur est appelé avec un argument correspondant à un répertoire, il lit et exécute un script d’un certain nom dans ce répertoire.

  • Quand l'interpréteur est appelé avec l'option -c commande, il exécute la ou les instructions Python données comme commande. Ici commande peut contenir plusieurs instructions séparées par des fins de ligne. Les blancs en début de ligne ne sont pas ignorés dans les instructions Python !

  • Quand l'interpréteur est appelé avec l'option -m nom-de-module, le module donné est recherché dans le chemin des modules Python et est exécuté en tant que script.

En mode non-interactif, toute l’entrée est analysée avant d’être exécutée.

Une option d'interface termine la liste des options consommées par l'interpréteur ; tous les arguments atterrissent dans sys.argv — notez que le premier élément, à l'indice zéro (sys.argv|0]), est une chaîne de caractères indiquant la source du programme.

-c <command>

Exécute le code Python dans command. command peut être une ou plusieurs instructions, séparées par des fins de ligne, dont les espaces en début de ligne sont significatives, comme dans le code d’un module.

Si cette option est donnée, le premier élément de sys.argv est "-c" et le répertoire courant est ajouté au début de sys.path (permettant aux modules de ce répertoire d'être importés comme des modules de premier niveau).

Lève un évènement d'audit cpython.run_command avec comme argument command.

-m <module-name>

Parcourt sys.path à la recherche du module donné et exécute son contenu en tant que module __main__.

L'argument étant un nom de module, vous ne devez pas fournir d’extension de fichier (.py). Le nom du module doit être un nom de module Python valide, absolu, mais l'implémentation peut ne pas l'imposer (par exemple, l'utilisation d'un trait d'union peut être autorisée).

Les noms de paquets sont aussi autorisés (ainsi que les paquets-espace de nommage, namespace packages en anglais). Quand un nom de paquet est donné à la place d'un simple module, l'interpréteur exécute <pkg>.__main__ comme module principal. Ce comportement est délibérément identique au traitement d'un dossier ou d'un fichier zip donné en argument à l'interpréteur comme script.

Note

Cette option ne peut pas être utilisée avec les modules natifs et les modules d'extension écrits en C, étant donné qu'ils ne possèdent pas de fichiers modules en Python. Cependant, elle peut toujours être utilisée pour les modules pré-compilés, même si le fichier source original n'est pas disponible.

Si cette option est donnée, le premier élément de sys.argv est le chemin complet d'accès au fichier du module (pendant que le fichier est recherché, le premier élément est mis à "-m"). Comme avec l'option -c, le dossier courant est ajouté au début 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.

De nombreux modules de la bibliothèque standard contiennent du code qui est invoqué quand ils sont exécutés comme scripts. Un exemple est le module timeit :

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

Lève un évènement d'audit cpython.run_command avec comme argument module-name.

Voir aussi

runpy.run_module()

Fonctionnalité équivalente directement disponible en code Python

PEP 338 -- Exécuter des modules en tant que scripts

Modifié dans la version 3.1: Fournir le nom d'un paquet pour exécuter un sous-module __main__.

Modifié dans la version 3.4: les paquets-espaces de nommage sont aussi gérés

-

Lit les commandes depuis l'entrée standard (sys.stdin). Si l'entrée standard est un terminal, l'option -i est activée implicitement.

Si cette option est donnée, le premier élément de sys.argv est "-" et le dossier courant est ajouté au début de sys.path.

Lève un évènement d'audit cpython.run_stdin sans argument.

<script>

Exécute le code Python contenu dans script, qui doit être un chemin d'accès (absolu ou relatif) à un fichier, faisant référence à un fichier Python, à un répertoire contenant un fichier __main__.py ou à un fichier zip contenant un fichier __main__.py.

Si cette option est donnée, le premier élément de sys.argv est le nom du script tel que donné sur la ligne de commande.

Si le nom du script se réfère directement à un fichier Python, le répertoire contenant ce fichier est ajouté au début de sys.path et le fichier est exécuté en tant que module __main__.

Si le nom du script fait référence à un dossier ou à un fichier zip, le nom du script est ajouté au début de sys.path et le fichier __main__.py à cet endroit est exécuté en tant que module __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.

Lève un évènement d'audit cpython.run_file avec comme argument filename.

Voir aussi

runpy.run_path()

Fonctionnalité équivalente directement disponible en code Python

Si aucune option d'interface n'est donnée, l'option -i est activée implicitement, sys.argv[0] est une chaine vide ("") et le dossier courant est ajouté au début de sys.path. Aussi, la complétion par tabulation et l'édition de l'historique sont automatiquement activés, s'ils sont disponibles sur votre système (voir Readline configuration).

Modifié dans la version 3.4: Activation automatique de la complétion par tabulation et édition de l'historique.

1.1.2. Options génériques

-?
-h
--help

Affiche une brève description de toutes les options de la ligne de commande et des variables d'environnement correspondantes, puis quitte.

--help-env

Affiche une brève description des variables d'environnement spécifiques à Python et quitte.

Ajouté dans la version 3.11.

--help-xoptions

Affiche une description spécifique à l'implémentation des options -X et quitte.

Ajouté dans la version 3.11.

--help-all

Affiche toutes les informations d'utilisation et quitte.

Ajouté dans la version 3.11.

-V
--version

Affiche la version de Python et termine. Par exemple :

Python 3.8.0b2+

Lorsque l'option est doublée, affiche davantage d'informations sur la manière dont Python a été compilé, comme :

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

Ajouté dans la version 3.6: L'option -VV.

1.1.3. Options diverses

-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).

Modifié dans la version 3.5: Affects also comparisons of bytes with int.

-B

S'il est donné, Python ne tente pas d'écrire de fichier .pyc ou .pyo à l'importation des modules sources. Voir aussi PYTHONDONTWRITEBYTECODE.

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

Contrôle la façon dont sont validés les fichiers .pyc avec empreinte (voir Invalidation de bytecode mis en cache). Quand la valeur est default, les caches de fichiers de code intermédiaire sont validés en fonction de leur sémantique par défaut. Quand la valeur est always, tous les fichiers .pyc, qu'ils soient vérifiés ou non, sont validés par rapport à leurs fichiers sources correspondants. Quand la valeur est never, les fichiers .pyc ne sont pas validés par rapport à leurs fichiers sources correspondants.

La sémantique des fichiers .pyc générés en fonction de l'horodatage n'est pas affectée par cette option.

-d

Turn on parser debugging output (for expert only). See also the PYTHONDEBUG environment variable.

This option requires a debug build of Python, otherwise it's ignored.

-E

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

Voir aussi les options -P et -I (mode isolé).

-i

Quand un script est passé comme premier argument ou que l'option -c est utilisée, entre en mode interactif après avoir exécuté le script ou la commande, même lorsque sys.stdin ne semble pas être un terminal. Le fichier PYTHONSTARTUP n'est pas lu.

Cela peut être utile pour examiner les variables globales ou une trace de la pile lorsque le script lève une exception. Voir aussi PYTHONINSPECT.

-I

Lance Python en mode isolé. Cela implique les options -E, -P et -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.

Ajouté dans la version 3.4.

-O

Enlève les instructions assert et tout le code qui dépend de la valeur de __debug__. Ajoute .opt-1 au nom de fichier du code intermédiaire (bytecode), avant l'extension .pyc (voir la PEP 488). Voir aussi PYTHONOPTIMIZE.

Modifié dans la version 3.5: Modifie les noms de fichiers .pyc suivant la PEP 488.

-OO

Agit comme -O et ignore aussi les docstrings. Ajoute .opt-2 au nom de fichier du code intermédiaire (bytecode), avant l'extension .pyc (voir la PEP 488).

Modifié dans la version 3.5: Modifie les noms de fichiers .pyc suivant la PEP 488.

-P

Ne pas ajouter de chemin (qui serait alors prioritaire) potentiellement non sûr à sys.path :

  • python -m module en ligne de commande : ne pas ajouter le répertoire de travail courant.

  • python script.py en ligne de commande : ne pas ajouter le répertoire du script. Si c'est un lien symbolique, résoudre les liens symboliques.

  • python -c code et python (REPL) en lignes de commande : ne pas ajouter de chaîne vide, ce qui voudrait dire le répertoire de travail courant.

Voir aussi la variable d'environnement PYTHONSAFEPATH ainsi que les options -E et -I (mode isolé).

Ajouté dans la version 3.11.

-q

N'affiche pas le copyright et la version, même en mode interactif.

Ajouté dans la version 3.2.

-R

Active l'imprévisibilité du hachage. Cette option ne produit un effet que si la variable d'environnement PYTHONHASHSEED est mise à 0, puisque l'imprévisibilité du hachage est activée par défaut.

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 vous permet de définir vous-même la valeur du sel pour l'algorithme de calcul des empreintes.

Ajouté dans la version 3.2.3.

Modifié dans la version 3.7: Cette option n'est plus ignorée.

-s

N'ajoute pas le répertoire utilisateur site-packages à sys.path.

See also PYTHONNOUSERSITE.

Voir aussi

PEP 370 -- Répertoire site-packages propre à l'utilisateur

-S

Désactive l’importation du module site et les modifications locales de sys.path qu’il implique. Désactive aussi ces manipulations si site est importé explicitement plus tard (appelez site.main() si vous voulez les déclencher).

-u

Force les flux de sortie et d'erreur standards à ne pas utiliser de tampon. Cette option n'a pas d'effet sur le flux d'entrée standard.

Voir aussi PYTHONUNBUFFERED.

Modifié dans la version 3.7: La couche texte des flux de sortie et d'erreur standards n'utilise maintenant plus de tampon.

-v

Affiche un message chaque fois qu'un module est initialisé, montrant l'emplacement (nom du fichier ou module natif) à partir duquel il est chargé. Lorsque l'option est doublée (-vv), affiche un message pour chaque fichier vérifié lors de la recherche du module. Fournit aussi des informations sur le nettoyage des modules à la fin.

Modifié dans la version 3.10: Le module site affiche les emplacements de recherche de modules spécifiques à l'installation ainsi que les fichiers .pth qui sont lus.

Voir aussi PYTHONVERBOSE.

-W arg

Contrôle des avertissements. Le mécanisme d'avertissement de Python, par défaut, affiche les messages d'avertissement sur sys.stderr.

Les configurations les plus simples forcent l'application de l'action à tous les avertissements émis par un processus (même ceux qui auraient été ignorés par défaut) :

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

Les noms des actions peuvent être abrégés à votre convenance, l'interpréteur fait la résolution vers le nom adéquat. Par exemple, -Wi équivaut à -Wignore.

La forme développée de l'argument de -W est :

action:message:category:module:lineno

Les champs message, category, module, line appliquent des filtres de sélection. Ils sont facultatifs : on peut les laisser vides, ou en omettre certains à la fin. Par exemple, -W ignore::DeprecationWarning permet d'ignorer tous les avertissements de type DeprecationWarning.

Le champ action déjà décrit s'applique donc uniquement aux avertissements qui sont passés à travers les filtres.

Un filtre message restreint l'action aux avertissements dont le texte complet correspond à message (la comparaison ne prend pas en compte la casse).

Un filtre category restreint l'action aux avertissements dont la classe est celle nommée category, ou bien une classe fille de la classe nommée category. Un exemple pour category est DeprecationWarning.

The module field matches the (fully qualified) module name; this match is case-sensitive.

Enfin, un filtre lineno restreint l'action aux avertissements qui proviennent d'un numéro de ligne donné. La valeur zéro revient à appliquer le filtre sur toutes les lignes, c.-à-d. l'équivalent de ne pas mettre de numéro.

L'option -W peut être répétée ; lorsqu'un avertissement correspond à plus d'une option, l'action associée à la dernière correspondance est effectuée. Les options -W invalides sont ignorées (cependant, un message d'avertissement est affiché sur les options invalides au moment où le premier avertissement est généré).

Les avertissements peuvent aussi être contrôlés en utilisant la variable d'environnement PYTHONWARNINGS et depuis un programme Python en utilisant le module warnings. Par exemple, la fonction warnings.filterwarnings() peut être utilisée pour filtrer les messages d'avertissement en utilisant une expression rationnelle.

Voir Le filtre des avertissements et Rédaction de filtres d'avertissement pour plus de détails.

-x

Saute la première ligne du code source, autorisant ainsi les directives de type #!cmd non conformes au standard Unix. L'objectif est de proposer une astuce spécifique pour le DOS.

-X

Réservée pour les options spécifiques aux différentes implémentations. CPython reconnaît actuellement les valeurs suivantes :

  • -X faulthandler to enable faulthandler. See also PYTHONFAULTHANDLER.

    Ajouté dans la version 3.3.

  • -X showrefcount pour afficher le compteur des références et le nombre de blocs mémoire utilisés lorsque le programme se termine ou après chaque entrée de l'interpréteur interactif. Ceci ne fonctionne que sur les versions compilées en mode débogage.

    Ajouté dans la version 3.4.

  • -X tracemalloc to start tracing Python memory allocations using the tracemalloc module. By default, only the most recent frame is stored in a traceback of a trace. Use -X tracemalloc=NFRAME to start tracing with a traceback limit of NFRAME frames. See tracemalloc.start() and PYTHONTRACEMALLOC for more information.

    Ajouté dans la version 3.4.

  • -X int_max_str_digits configure la limitation de la longueur de conversion des chaînes entières. Voir aussi PYTHONINTMAXSTRDIGITS.

    Ajouté dans la version 3.11.

  • -X importtime affiche le temps mis pour chaque importation. Le temps total par module est affiché (y compris le temps pris par les importations imbriquées) ainsi que le temps propre du module (c.-à-d. sans les importations imbriquées). Notez que l'affichage peut être perturbé dans une application avec de multiples fils d'exécution. L'utilisation classique est python3 -X importtime -c 'import asyncio'. Voir aussi PYTHONPROFILEIMPORTTIME.

    Ajouté dans la version 3.7.

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

    Ajouté dans la version 3.7.

  • -X utf8 enables the Python UTF-8 Mode. -X utf8=0 explicitly disables Python UTF-8 Mode (even when it would otherwise activate automatically). See also PYTHONUTF8.

    Ajouté dans la version 3.7.

  • -X pycache_prefix=PATH place l'arborescence des fichiers .pyc à partir du chemin donné au lieu de l'arborescence du code source. Voir aussi PYTHONPYCACHEPREFIX.

    Ajouté dans la version 3.8.

  • -X warn_default_encoding pour émettre un EncodingWarning lorsqu'un fichier est ouvert avec l'encodage par défaut des paramètres régionaux. Voir aussi PYTHONWARNDEFAULTENCODING.

    Ajouté dans la version 3.10.

  • -X no_debug_ranges désactive l'inclusion des tableaux qui font la correspondance avec des informations extérieures (ligne de fin, numéros des colonnes de début et de fin) pour toutes les instructions du code. C'est utile quand vous souhaitez diminuer la taille du code objet et des fichiers pyc ou alors quand vous voulez supprimer des informations de position quand l'interpréteur affiche les traces d'appels. Regardez aussi PYTHONNODEBUGRANGES.

    Ajouté dans la version 3.11.

  • -X frozen_modules indique si le mécanisme d'importation doit ignorer ou pas les modules gelés. La valeur "on" signifie qu'ils sont importés et "off" qu'ils sont ignorés. La valeur par défaut est "on" si Python est une version installée (le cas normal). Si c'est une version de développement (lancée depuis l'arborescence des sources) alors la valeur par défaut est "off". Notez que les modules gelés importlib_bootstrap et importlib_bootstrap_external sont toujours utilisés, même si l'indicateur est mis à "off".

    Ajouté dans la version 3.11.

  • -X perf enables support for the Linux perf profiler. When this option is provided, the perf profiler will be able to report Python calls. This option is only available on some platforms and will do nothing if is not supported on the current system. The default value is "off". See also PYTHONPERFSUPPORT and Python support for the Linux perf profiler.

    Ajouté dans la version 3.12.

Il est aussi possible de passer des valeurs arbitraires et de les récupérer par le dictionnaire sys._xoptions.

Ajouté dans la version 3.2.

Modifié dans la version 3.9: Removed the -X showalloccount option.

Modifié dans la version 3.10: Removed the -X oldparser option.

1.1.4. Options à ne pas utiliser

-J

Utilisation réservée à Jython.

1.2. Variables d'environnement

Les variables d'environnement suivantes modifient le comportement de Python. Elles sont analysées avant les options de la ligne de commande, autres que -E ou -I. Il est d'usage que les options de la ligne de commande prennent le pas sur les variables d'environnement en cas de conflit.

PYTHONHOME

Modifie l'emplacement des bibliothèques standards de Python. Par défaut, les bibliothèques sont recherchées dans préfixe/lib/pythonversion et préfixe_exec/lib/pythonversionpréfixe et préfixe_exec sont des répertoires qui dépendent de l'installation (leur valeur par défaut étant /usr/local).

Quand PYTHONHOME est défini à un simple répertoire, sa valeur remplace à la fois préfixe et préfixe_exec. Pour spécifier des valeurs différentes à ces variables, définissez PYTHONHOME à préfixe:préfixe_exec.

PYTHONPATH

Augmente le chemin de recherche par défaut des fichiers de modules. Le format est le même que pour PATH du shell : un ou plusieurs chemins de répertoires séparés par os.pathsep (par exemple, le caractère deux-points sous Unix et point-virgule sous Windows). Les répertoires qui n'existent pas sont ignorés silencieusement.

En plus des répertoires normaux, des entrées individuelles de PYTHONPATH peuvent faire référence à des fichiers zip contenant des modules en pur Python (soit sous forme de code source, soit sous forme compilée). Les modules d'extensions ne peuvent pas être importés à partir de fichiers zip.

Le chemin de recherche par défaut dépend de l'installation mais commence généralement par préfixe/lib/pythonversion (voir PYTHONHOME ci-dessus). Il est toujours ajouté à PYTHONPATH.

Comme indiqué ci-dessus dans Options de l'interface, un répertoire supplémentaire est inséré dans le chemin de recherche devant PYTHONPATH. Le chemin de recherche peut être manipulé depuis un programme Python avec la variable sys.path.

PYTHONSAFEPATH

Si elle est définie à une chaîne non vide, ne pas ajouter un chemin potentiellement non sûr à sys.path : voir l'option -P pour les détails.

Ajouté dans la version 3.11.

PYTHONPLATLIBDIR

Si elle est définie à une chaîne non vide, elle remplace la valeur de sys.platlibdir.

Ajouté dans la version 3.9.

PYTHONSTARTUP

S'il s'agit d'un nom de fichier accessible en lecture, les commandes Python de ce fichier sont exécutées avant que la première invite ne soit affichée en mode interactif. Le fichier est exécuté dans le même espace de nommage que les commandes interactives, de manière à ce que les objets définis ou importés puissent être utilisés sans qualificatif dans la session interactive. Vous pouvez aussi changer les invites sys.ps1 et sys.ps2 ainsi que le point d'entrée (hook en anglais) sys.__interactivehook__ dans ce fichier.

Lève un évènement d'audit cpython.run_startup avec le nom du fichier en argument lorsqu'il est lancé au démarrage.

PYTHONOPTIMIZE

Si elle est définie à une chaîne non vide, c'est équivalent à spécifier l'option -O. Si elle est définie à un entier, c'est équivalent à spécifier l'option -O plusieurs fois.

PYTHONBREAKPOINT

Si elle est définie, elle fait référence à un appelable en utilisant la notation des chemins délimités par des points. Le module contenant l'appelable est importé et l'appelable est alors lancé par l'implémentation par défaut de sys.breakpointhook(), elle-même étant appelée par la fonction native breakpoint(). Si elle n'est pas définie ou définie par une chaîne vide, elle vaut la même chose que pdb.set_trace. La définir à la chaîne "0" entraine que l'implémentation par défaut de sys.breakpointhook() ne fait rien et s'interrompt immédiatement.

Ajouté dans la version 3.7.

PYTHONDEBUG

Si elle est définie à une chaîne non vide, c'est équivalent à spécifier l'option -d. Si elle est définie à un entier, c'est équivalent à spécifier l'option -d plusieurs fois.

This environment variable requires a debug build of Python, otherwise it's ignored.

PYTHONINSPECT

Si elle est définie à une chaîne non vide, c'est équivalent à spécifier l'option -i.

Cette variable peut aussi être modifiée par du code Python en utilisant os.environ pour forcer le mode introspectif à la fin du programme.

Lève un évènement d'audit cpython.run_stdin sans argument.

Modifié dans la version 3.12.5: (also 3.11.10, 3.10.15, 3.9.20, and 3.8.20) Emits audit events.

PYTHONUNBUFFERED

Si elle est définie à une chaîne non vide, c'est équivalent à spécifier l'option -u.

PYTHONVERBOSE

Si elle est définie à une chaîne non vide, c'est équivalent à spécifier l'option -v. Si elle est définie à un entier, c'est équivalent à spécifier l'option -v plusieurs fois.

PYTHONCASEOK

Si elle est définie, Python ignore la casse dans les instructions import. Ceci ne fonctionne que sous Windows et macOS.

PYTHONDONTWRITEBYTECODE

Si elle est définie et n'est pas une chaîne vide, Python n'écrit pas de fichier .pyc à l'importation des modules sources. C'est équivalent à spécifier l'option -B.

PYTHONPYCACHEPREFIX

Si elle est définie, Python n'écrit pas ses fichiers .pyc dans __pycache__ mais dans une arborescence miroir à ce chemin. C'est l'équivalent de l'option -X pycache_prefix=PATH.

Ajouté dans la version 3.8.

PYTHONHASHSEED

Si cette variable n'est pas définie ou définie à random, une valeur aléatoire est utilisée pour saler les empreintes des objets str et bytes.

Si PYTHONHASHSEED est définie à une valeur entière, elle est utilisée comme valeur de salage pour générer les empreintes des types utilisant l'imprévisibilité du hachage.

L'objectif est d'avoir des empreintes reproductibles, pour des tests de l'interpréteur lui-même ou pour qu'un groupe de processus Python puisse partager des empreintes.

Le nombre entier doit être écrit en base 10 et être compris entre 0 et 4 294 967 295. Spécifier la valeur 0 désactive l'imprévisibilité des empreintes.

Ajouté dans la version 3.2.3.

PYTHONINTMAXSTRDIGITS

Si un entier est assigné à cette variable, elle est utilisée pour configurer la limite globale de l'interpréteur limitation de la longueur de conversion des chaînes de caractères entiers.

Ajouté dans la version 3.11.

PYTHONIOENCODING

Si la variable est définie sous la forme nom_encodage:gestionnaire_erreur avant le lancement de l'interpréteur, cela prend le pas sur l'encodage utilisé pour l'entrée standard, la sortie standard ou la sortie d'erreur. nom_encodage et :gestionnaire_erreur sont facultatifs tous les deux et possèdent la même signification que dans str.encode().

Pour la sortie d'erreur, la partie :gestionnaire_erreur est ignorée : le gestionnaire est toujours 'backslashreplace'.

Modifié dans la version 3.4: La partie nom_encodage est maintenant optionnelle.

Modifié dans la version 3.6: Sous Windows, l'encodage spécifié par cette variable est ignoré pour le tampon des consoles interactives à moins que PYTHONLEGACYWINDOWSSTDIO ne soit aussi spécifié. Les fichiers et tubes (pipes en anglais) redirigés vers les flux standards ne sont pas concernés.

PYTHONNOUSERSITE

Si elle est définie, Python n'ajoute pas le répertoire site-packages propre à l'utilisateur à sys.path.

Voir aussi

PEP 370 -- Répertoire site-packages propre à l'utilisateur

PYTHONUSERBASE

Defines the user base directory, which is used to compute the path of the user site-packages directory and installation paths for python -m pip install --user.

Voir aussi

PEP 370 -- Répertoire site-packages propre à l'utilisateur

PYTHONEXECUTABLE

Si cette variable d'environnement est définie, sys.argv[0] est définie à cette valeur au lieu de la valeur fournie par l'exécutable. Ne fonctionne que sur macOS.

PYTHONWARNINGS

C'est équivalent à spécifier l'option -W. Si la valeur est une chaîne séparée par des virgules, c'est équivalent à spécifier l'option -W plusieurs fois. Dans ce cas, les filtres spécifiés en derniers prennent le pas sur ceux qui les précèdent dans la liste.

Les configurations les plus simples forcent l'application de l'action à tous les avertissements émis par un processus (même ceux qui auraient été ignorés par défaut) :

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

Voir Le filtre des avertissements et Rédaction de filtres d'avertissement pour plus de détails.

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.

Ajouté dans la version 3.3.

PYTHONTRACEMALLOC

If this environment variable is set to a non-empty string, start tracing Python memory allocations using the tracemalloc module. The value of the variable is the maximum number of frames stored in a traceback of a trace. For example, PYTHONTRACEMALLOC=1 stores only the most recent frame. See the tracemalloc.start() function for more information. This is equivalent to setting the -X tracemalloc option.

Ajouté dans la version 3.4.

PYTHONPROFILEIMPORTTIME

If this environment variable is set to a non-empty string, Python will show how long each import takes. This is equivalent to setting the -X importtime option.

Ajouté dans la version 3.7.

PYTHONASYNCIODEBUG

Si elle est définie à une chaîne non vide, active le mode debogage du module asyncio.

Ajouté dans la version 3.4.

PYTHONMALLOC

Définit l'allocateur mémoire de Python ou installe des points d'entrée (hooks en anglais) de débogage.

Définit la famille d'allocateurs mémoire utilisés par Python :

Chacun de ces modes possède un pendant qui ajoute en plus des points d'entrée de débogage :

  • debug : installe des points d'entrée de débogage au-dessus des allocateurs de mémoire par défaut.

  • malloc_debug: identique à malloc mais installe aussi des points d'entrée de débogage.

  • pymalloc_debug pour pymalloc.

Ajouté dans la version 3.6.

Modifié dans la version 3.7: L'allocateur default a été ajouté.

PYTHONMALLOCSTATS

Si elle est définie à une chaîne non vide, Python affiche des statistiques relatives à l’allocateur mémoire pymalloc chaque fois qu'un objet est créé par ce gestionnaire, ainsi qu'à la fin de l'exécution du programme.

Cette variable est ignorée si la variable d'environnement PYTHONMALLOC est utilisée pour forcer l'allocateur malloc() de la bibliothèque C standard ou si Python est configuré sans le support de pymalloc.

Modifié dans la version 3.6: Cette variable peut maintenant être utilisée avec Python compilé en mode release. Elle n'a pas d'effet si elle est définie à une chaine vide.

PYTHONLEGACYWINDOWSFSENCODING

Si elle est définie et n’est pas une chaîne vide, l'encodage utilisé pour interagir avec le système de fichiers et le gestionnaire d'erreurs associé reviennent à leurs valeurs par défaut pré-3.6, respectivement 'mbcs' et 'replace'. Sinon, elles prennent les nouvelles valeurs par défaut "UTF-8" et "surrogatepass".

This may also be enabled at runtime with sys._enablelegacywindowsfsencoding().

Availability: Windows.

Ajouté dans la version 3.6: Voir la PEP 529 pour plus d'informations.

PYTHONLEGACYWINDOWSSTDIO

Si elle est définie et n’est pas une chaîne vide, n'utilise pas les lecteur et écrivain de la nouvelle console. Cela signifie que les caractères Unicode sont encodés avec l'encodage de la console active plutôt qu'en UTF-8.

Cette variable est ignorée si les flux standards sont redirigés (vers des fichiers ou des tubes) plutôt que pointant vers des mémoires tampons de console.

Availability: Windows.

Ajouté dans la version 3.6.

PYTHONCOERCECLOCALE

Si elle est définie à la valeur 0, l'application en ligne de commande principale Python ne prend pas en compte les configurations régionales C et POSIX à base ASCII, mais bascule sur une alternative basée sur l'UTF-8 qui doit posséder plus de possibilités.

Si cette variable n'est pas définie (ou est définie à une valeur autre que 0), que la variable d'environnement de configuration régionale LC_ALL est également non définie et que la configuration régionale indiquée dans la catégorie LC_TYPE est soit la région par défaut C, soit la région POSIX qui demande explicitement de l'ASCII, alors l'interpréteur en ligne de commande Python essaie de configurer les paramètres régionaux pour la catégorie LC_TYPE dans l'ordre suivant avant de charger l'exécutable de l'interpréteur :

  • C.UTF-8

  • C.utf8

  • UTF-8

Si la définition d'une des configurations régionales fonctionne, la variable d'environnement LC_TYPE est aussi définie ainsi dans l'environnement du processus avant que l'exécutable Python ne soit initialisé. Ceci assure que, en plus d'être vue par l'interpréteur lui-même et tous les autres composants prenant en charge la configuration régionale dans le même processus (telle que la bibliothèque GNU readline), la configuration mise à jour est aussi valable pour les sous-processus (indépendamment du fait qu'ils utilisent un interpréteur Python ou non) ainsi que pour les opérations qui font appel à l'environnement (qui utiliseraient sinon la configuration régionale C courante, tel que c'est le cas pour la propre fonction Python locale.getdefaultlocale()).

La configuration d'une de ces variables régionales (soit explicitement, soit via le mécanisme décrit ci-dessus) active automatiquement surrogateescape pour la gestion des erreurs de sys.stdin et sys.stdout (sys.stderr continue d'utiliser backslashreplace comme pour toute autre configuration régionale). Ce comportement relatif à la gestion des flux standards peut être surchargé, comme d'habitude, par PYTHONIOENCODING.

À fin de débogage, définir PYTHONCOERCECLOCALE=warn indique à Python d'émettre les messages d'avertissement sur stderr si la configuration régionale est activée, ou si une configuration régionale qui aurait activé est toujours active quand l'interpréteur Python est initialisé.

Notez également que même si la contrainte sur la configuration régionale est désactivée, ou si elle ne trouve pas une configuration satisfaisante et échoue, PYTHONUTF8 s'active par défaut avec une configuration régionale par défaut à base ASCII. Ces fonctionnalités doivent être désactivées pour forcer l'interpréteur à utiliser ASCII en lieu et place de UTF-8 pour les interfaces avec le système.

Availability: Unix.

Ajouté dans la version 3.7: Voir la PEP 538 pour plus d'informations.

PYTHONDEVMODE

If this environment variable is set to a non-empty string, enable Python Development Mode, introducing additional runtime checks that are too expensive to be enabled by default. This is equivalent to setting the -X dev option.

Ajouté dans la version 3.7.

PYTHONUTF8

La valeur 1 active le mode UTF-8.

La valeur 0 désactive le mode UTF-8.

Définir une valeur autre (non vide) entraine une erreur pendant l'initialisation de l'interpréteur.

Ajouté dans la version 3.7.

PYTHONWARNDEFAULTENCODING

Si elle est définie à une chaîne non vide, un avertissement EncodingWarning est émis lorsque l'encodage par défaut de la configuration régionale est utilisé.

Voir Opt-in EncodingWarning pour plus de détails.

Ajouté dans la version 3.10.

PYTHONNODEBUGRANGES

Si cette variable est définie, cela désactive l'inclusion des tableaux qui font la correspondance avec des informations extérieures (ligne de fin, numéros des colonnes de début et de fin) pour toutes les instructions du code. C'est utile quand vous souhaitez diminuer la taille du code objet et des fichiers pyc ou alors quand vous voulez supprimer des informations de position quand l'interpréteur affiche les traces d'appels.

Ajouté dans la version 3.11.

PYTHONPERFSUPPORT

If this variable is set to a nonzero value, it enables support for the Linux perf profiler so Python calls can be detected by it.

If set to 0, disable Linux perf profiler support.

See also the -X perf command-line option and Python support for the Linux perf profiler.

Ajouté dans la version 3.12.

1.2.1. Variables en mode débogage

PYTHONDUMPREFS

Si elle est définie, Python affiche (de manière brute) les objets et les compteurs de références toujours existant après la fermeture de l'interpréteur.

Nécessite que Python soit configuré avec l'option de compilation --with-trace-refs.

PYTHONDUMPREFSFILE=FILENAME

Si elle est définie, Python écrit (de manière brute) dans un fichier appelé FILENAME les objets et les compteurs de références toujours existant après la fermeture de l'interpréteur.

Nécessite que Python soit configuré avec l'option de compilation --with-trace-refs.

Ajouté dans la version 3.11.