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.

CPython implementation detail: 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 [-bBdEhiIOqsSuvVWx?] [-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).

-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 noms, 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 intégrés et les modules d’extension écrits en C, étant donné qu’il 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.

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 -mtimeit -s 'setup here' 'benchmarked code here'
python -mtimeit -h # for details

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 noms sont supporté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.

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

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.

-V
--version

Affiche la version de Python et termine. Par exemple :

Python 3.7.0b2+

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

Python 3.7.0b2+ (3.7:0c076caaa8, Sep 22 2018, 12:04:24)
[GCC 6.2.0 20161005]

Nouveau dans la version 3.6: option -VV.

1.1.3. Options diverses

-b

Affiche un avertissement (warning en anglais) lors d’une comparaison d’un objet de type bytes ou bytearray avec un objet de type str ou un objet de type bytes avec un objet de type int. Lève une erreur si cette option est doublée (-bb).

Modifié dans la version 3.5: Concerne les comparaisons de bytes avec int.

-B

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

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

Control the validation behavior of hash-based .pyc files. See Invalidation de bytecode mis en cache. When set to default, checked and unchecked hash-based bytecode cache files are validated according to their default semantics. When set to always, all hash-based .pyc files, whether checked or unchecked, are validated against their corresponding source file. When set to never, hash-based .pyc files are not validated against their corresponding source files.

The semantics of timestamp-based .pyc files are unaffected by this option.

-d

Active la sortie de l’analyseur en mode débogage (pour les experts uniquement, en fonction des options de compilation). Voir aussi PYTHONDEBUG.

-E

Ignore toutes les variables d’environnement PYTHON* qui pourraient être définies. Par exemple, PYTHONPATH et PYTHONHOME.

-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 aussi -E et -s. En mode isolé, sys.path ne contient ni le répertoire du script ni le répertoire site-packages de l’utilisateur. Toutes les variables d’environnement PYTHON* sont aussi ignorées. Davantage de restrictions peuvent être imposées pour éviter que l’utilisateur n’injecte du code malicieux.

Nouveau dans la version 3.4.

-O

Remove assert statements and any code conditional on the value of __debug__. Augment the filename for compiled (bytecode) files by adding .opt-1 before the .pyc extension (see PEP 488). See also PYTHONOPTIMIZE.

Modifié dans la version 3.5: Modify .pyc filenames according to PEP 488.

-OO

Do -O and also discard docstrings. Augment the filename for compiled (bytecode) files by adding .opt-2 before the .pyc extension (see PEP 488).

Modifié dans la version 3.5: Modify .pyc filenames according to PEP 488.

-q

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

Nouveau dans la version 3.2.

-R

Turn on hash randomization. This option only has an effect if the PYTHONHASHSEED environment variable is set to 0, since hash randomization is enabled by default.

Sur les versions précédentes de Python, cette option activait la randomisation des empreintes de manière à ce que les __hash__() de chaînes, bytes et datetime soient « salés » avec une valeur aléatoire non prévisible. Bien que ce sel soit constant durant le déroulement d’un processus Python, il n’est pas prévisible pour des invocations répétées de code Python.

La randomisation des empreintes a pour objectif de se protéger contre les dénis de service qui utiliseraient des valeurs d’entrée judicieusement choisies afin de forcer la construction des dictionnaires dans le pire cas, c’est-à-dire avec une complexité en O(n^2). Voir http://www.ocert.org/advisories/ocert-2011-003.html pour obtenir les détails.

PYTHONHASHSEED vous permet de définir vous-même la valeur du sel pour l’algorithme de calcul des empreintes.

Modifié dans la version 3.7: The option is no longer ignored.

Nouveau dans la version 3.2.3.

-s

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

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 the stdout and stderr streams to be unbuffered. This option has no effect on the stdin stream.

Voir aussi PYTHONUNBUFFERED.

Modifié dans la version 3.7: The text layer of the stdout and stderr streams now is unbuffered.

-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 du module à la fin. 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. Un message d’avertissement type est de la forme suivante :

file:line: category: message

Par défaut, chaque avertissement est affiché une seule fois pour chaque ligne de source où il se trouve. Cette option définit à quelle fréquence afficher ces avertissements.

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.

The simplest settings apply a particular action unconditionally to all warnings emitted by a process (even those that are otherwise ignored by default):

-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

The action names can be abbreviated as desired (e.g. -Wi, -Wd, -Wa, -We) and the interpreter will resolve them to the appropriate action name.

See The Warnings Filter and Describing Warning Filters for more details.

-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 pour activer faulthandler ;
  • -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.
  • -X tracemalloc pour lancer le suivi des allocations mémoire par Python en utilisant le module tracemalloc. Par défaut, seul l’appel (la frame en anglais) le plus récent est stocké dans la trace de la pile d’appels. Utilisez -X tracemalloc=NFRAME pour lancer le suivi avec une limite des traces à NFRAME appels. Voir tracemalloc.start() pour plus d’informations.
  • -X showalloccount pour afficher à la fin de l’exécution du programme le total des objets alloués pour chaque type. Ceci ne fonctionne que si Python a été compilé avec l’option COUNT_ALLOCS.
  • -X importtime to show how long each import takes. It shows module name, cumulative time (including nested imports) and self time (excluding nested imports). Note that its output may be broken in multi-threaded application. Typical usage is python3 -X importtime -c 'import asyncio'. See also PYTHONPROFILEIMPORTTIME.
  • -X dev: enable CPython’s « development mode », introducing additional runtime checks which are too expensive to be enabled by default. It should not be more verbose than the default if the code is correct: new warnings are only emitted when an issue is detected. Effect of the developer mode:
  • -X utf8 enables UTF-8 mode for operating system interfaces, overriding the default locale-aware mode. -X utf8=0 explicitly disables UTF-8 mode (even when it would otherwise activate automatically). See PYTHONUTF8 for more details.

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

Modifié dans la version 3.2: L’option -X a été ajoutée.

Nouveau dans la version 3.3: option -X faulthandler.

Nouveau dans la version 3.4: options -X showrefcount et -X tracemalloc .

Nouveau dans la version 3.6: option -X showalloccount.

Nouveau dans la version 3.7: Les options -X importtime, -X dev et -X utf8.

1.1.4. Options à ne pas utiliser

-J

Utilisation réservée à Jython.

1.2. Variables d’environnement

Ces variables d’environnement 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 à prefix:exec_prefix.

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

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 noms 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 la fonction automatique (hook en anglais) sys.__interactivehook__ dans ce fichier.

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

If this is set, it names a callable using dotted-path notation. The module containing the callable will be imported and then the callable will be run by the default implementation of sys.breakpointhook() which itself is called by built-in breakpoint(). If not set, or set to the empty string, it is equivalent to the value « pdb.set_trace ». Setting this to the string « 0 » causes the default implementation of sys.breakpointhook() to do nothing but return immediately.

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

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.

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 OS X.

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.

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 chaines, bytes et datetime.

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 la randomisation 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 compris entre 0 et 4 294 967 295. Spécifier la valeur 0 désactive la randomisation des empreintes.

Nouveau dans la version 3.2.3.

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 utilisateur à sys.path.

Voir aussi

PEP 370 – Répertoire site-packages propre à l’utilisateur.

PYTHONUSERBASE

Définit le répertoire base utilisateur. Celui-ci est utilisé pour déterminer le chemin du répertoire utilisateur site-packages et Installation alternative : le schéma user pour python setup.py 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 à la même valeur au lieu de la valeur fournie par l’exécutable. Ne fonctionne que sur Mac OS X.

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, auquel cas c’est la dernière de la liste qui sera prise en compte.

The simplest settings apply a particular action unconditionally to all warnings emitted by a process (even those that are otherwise ignored by default):

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

See The Warnings Filter and Describing Warning Filters for more details.

PYTHONFAULTHANDLER

Si elle est définie à une chaîne non vide, faulthandler.enable() est appelée au démarrage : ceci installe un gestionnaire pour les signaux SIGSEGV, SIGFPE, SIGABRT, SIGBUS et SIGILL afin de générer une trace de la pile d’appels. C’est équivalent à spécifier l’option -X faulthandler.

Nouveau dans la version 3.3.

PYTHONTRACEMALLOC

Si elle est définie à une chaîne non vide, lance le suivi des allocations mémoire par Python en utilisant le module tracemalloc. La valeur de la variable définit le nombre maximum d’appels (les frames en anglais) stockés dans la trace de pile d’appels. Par exemple, PYTHONTRACEMALLOC=1 ne stocke que l’appel le plus récent. Voir tracemalloc.start() pour davantage d’informations.

Nouveau dans la version 3.4.

PYTHONPROFILEIMPORTTIME

Si elle est définie et n’est pas une chaîne vide, Python affichera le temps pris par les imports. C’est exactement équivalent à donner -X importtime en ligne de commande.

Nouveau dans la version 3.7.

PYTHONASYNCIODEBUG

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

Nouveau dans la version 3.4.

PYTHONMALLOC

Définit l’allocateur mémoire de Python ou installe des fonctions automatiques de débogage.

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

Installe des fonctions automatiques de débogage :

  • debug : installe des fonctions automatiques de débogage de l’allocateur de mémoire par défaut.
  • malloc_debug: identique à malloc mais installe aussi des fonctions automatiques de débogage.
  • pymalloc_debug: identique à pymalloc mais installe aussi des fonctions automatiques de débogage.

Reportez-vous au chapitre default-memory-allocators et à la fonction PyMem_SetupDebugHooks() (configure des fonctions de débogage sur les allocateurs de mémoire de Python).

Modifié dans la version 3.7: Added the "default" allocator.

Nouveau dans la version 3.6.

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 par défaut respectivement du système de fichiers et des erreurs reviennent à leur valeur pré-3.6, respectivement 'mbcs' et 'replace'. Sinon, les nouvelles valeurs par défaut "UTF-8" et "surrogatepass" sont utilisées.

Vous pouvez aussi activer ceci à l’exécution avec sys._enablelegacywindowsfsencoding().

Availability: Windows.

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

Nouveau dans la version 3.6.

PYTHONCOERCECLOCALE

If set to the value 0, causes the main Python command line application to skip coercing the legacy ASCII-based C and POSIX locales to a more capable UTF-8 based alternative.

If this variable is not set (or is set to a value other than 0), the LC_ALL locale override environment variable is also not set, and the current locale reported for the LC_CTYPE category is either the default C locale, or else the explicitly ASCII-based POSIX locale, then the Python CLI will attempt to configure the following locales for the LC_CTYPE category in the order listed before loading the interpreter runtime:

  • C.UTF-8
  • C.utf8
  • UTF-8

If setting one of these locale categories succeeds, then the LC_CTYPE environment variable will also be set accordingly in the current process environment before the Python runtime is initialized. This ensures that in addition to being seen by both the interpreter itself and other locale-aware components running in the same process (such as the GNU readline library), the updated setting is also seen in subprocesses (regardless of whether or not those processes are running a Python interpreter), as well as in operations that query the environment rather than the current C locale (such as Python’s own locale.getdefaultlocale()).

Configuring one of these locales (either explicitly or via the above implicit locale coercion) automatically enables the surrogateescape error handler for sys.stdin and sys.stdout (sys.stderr continues to use backslashreplace as it does in any other locale). This stream handling behavior can be overridden using PYTHONIOENCODING as usual.

For debugging purposes, setting PYTHONCOERCECLOCALE=warn will cause Python to emit warning messages on stderr if either the locale coercion activates, or else if a locale that would have triggered coercion is still active when the Python runtime is initialized.

Also note that even when locale coercion is disabled, or when it fails to find a suitable target locale, PYTHONUTF8 will still activate by default in legacy ASCII-based locales. Both features must be disabled in order to force the interpreter to use ASCII instead of UTF-8 for system interfaces.

Availability: *nix.

Nouveau dans la version 3.7: Voir la PEP 538 pour plus d’informations.

PYTHONDEVMODE

Si cette variable d’environnement est définie et non vide, active le « mode développeur » de CPython. Voir l’option -X dev.

Nouveau dans la version 3.7.

PYTHONUTF8

If set to 1, enables the interpreter’s UTF-8 mode, where UTF-8 is used as the text encoding for system interfaces, regardless of the current locale setting.

This means that:

As a consequence of the changes in those lower level APIs, other higher level APIs also exhibit different default behaviours:

  • Command line arguments, environment variables and filenames are decoded to text using the UTF-8 encoding.
  • os.fsdecode() and os.fsencode() use the UTF-8 encoding.
  • open(), io.open(), and codecs.open() use the UTF-8 encoding by default. However, they still use the strict error handler by default so that attempting to open a binary file in text mode is likely to raise an exception rather than producing nonsense data.

Note that the standard stream settings in UTF-8 mode can be overridden by PYTHONIOENCODING (just as they can be in the default locale-aware mode).

If set to 0, the interpreter runs in its default locale-aware mode.

Setting any other non-empty string causes an error during interpreter initialisation.

If this environment variable is not set at all, then the interpreter defaults to using the current locale settings, unless the current locale is identified as a legacy ASCII-based locale (as described for PYTHONCOERCECLOCALE), and locale coercion is either disabled or fails. In such legacy locales, the interpreter will default to enabling UTF-8 mode unless explicitly instructed not to do so.

Also available as the -X utf8 option.

Availability: *nix.

Nouveau dans la version 3.7: Voir la PEP 540 pour plus d’informations.

1.2.1. Variables en mode débogage

Définir ces variables n’a d’effet que si Python a été compilé en mode débogage, c’est-à-dire que l’option de compilation --with-pydebug a été spécifiée.

PYTHONTHREADDEBUG

Si elle est définie, Python affiche des informations de débogage relatives aux différents fils d’exécution.

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.