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.argvest"-c"et le répertoire courant est ajouté au début desys.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 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.argvest 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 desys.path.-Ioption can be used to run the script in isolated mode wheresys.pathcontains neither the current directory nor the user's site-packages directory. AllPYTHON*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
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-iest activée implicitement.Si cette option est donnée, le premier élément de
sys.argvest"-"et le dossier courant est ajouté au début desys.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__.pyou à un fichier zip contenant un fichier__main__.py.Si cette option est donnée, le premier élément de
sys.argvest 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.pathet 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.pathet le fichier__main__.pyà cet endroit est exécuté en tant que module__main__.-Ioption can be used to run the script in isolated mode wheresys.pathcontains neither the script's directory nor the user's site-packages directory. AllPYTHON*environment variables are ignored, too.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).
Voir aussi
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¶
-
-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: L'option
-VV.
1.1.3. Options diverses¶
-
-b¶ Affiche un avertissement (warning en anglais) lors d'une comparaison d'un objet de type
bytesoubytearrayavec un objet de typestrou un objet de typebytesavec un objet de typeint. Lève une erreur si cette option est doublée (-bb).
-
-B¶ S'il est donné, Python ne tente pas d'écrire de fichier
.pycou.pyoà l'importation des modules sources. Voir aussiPYTHONDONTWRITEBYTECODE.
-
--check-hash-based-pycsdefault|always|never¶ Contrôle la façon dont sont validés les fichiers
.pycavec empreinte (voir Invalidation de bytecode mis en cache). Quand la valeur estdefault, les caches de fichiers de code intermédiaire sont validés en fonction de leur sémantique par défaut. Quand la valeur estalways, tous les fichiers.pyc, qu'ils soient vérifiés ou non, sont validés par rapport à leurs fichiers sources correspondants. Quand la valeur estnever, les fichiers.pycne sont pas validés par rapport à leurs fichiers sources correspondants.La sémantique des fichiers
.pycgénérés en fonction de l'horodatage n'est pas affectée par cette 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,PYTHONPATHetPYTHONHOME.
-
-i¶ Quand un script est passé comme premier argument ou que l'option
-cest utilisée, entre en mode interactif après avoir exécuté le script ou la commande, même lorsquesys.stdinne semble pas être un terminal. Le fichierPYTHONSTARTUPn'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.pathne contient ni le répertoire du script ni le répertoire site-packages de l'utilisateur. Toutes les variables d'environnementPYTHON*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¶ Enlève les instructions assert et tout le code qui dépend de la valeur de
__debug__. Ajoute.opt-1au nom de fichier du code intermédiaire (bytecode), avant l'extension.pyc(voir la PEP 488). Voir aussiPYTHONOPTIMIZE.Modifié dans la version 3.5: modifie les noms de fichiers
.pycsuivant la PEP 488.
-
-OO¶ Agit comme
-Oet ignore aussi les docstrings. Ajoute.opt-2au 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
.pycsuivant la PEP 488.
-
-q¶ N'affiche pas le copyright et la version, même en mode interactif.
Nouveau dans la version 3.2.
-
-R¶ Active l'imprévisibilité du hachage. Cette option ne produit un effet que si la variable d'environnement
PYTHONHASHSEEDest mise à0, puisque l'imprévisibilité du hachage est activée par défaut.Sur les versions précédentes de Python, cette option activait l'imprévisibilité des empreintes de manière à ce que les
__hash__()de chaînes, bytes etdatetimesoient "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.L'imprévisibilité 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(n2). Voir http://www.ocert.org/advisories/ocert-2011-003.html pour obtenir les détails.
PYTHONHASHSEEDvous permet de définir vous-même la valeur du sel pour l'algorithme de calcul des empreintes.Modifié dans la version 3.7: cette option n'est plus ignorée.
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
siteet les modifications locales desys.pathqu’il implique. Désactive aussi ces manipulations sisiteest importé explicitement plus tard (appelezsite.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. Voir aussiPYTHONVERBOSE.
-
-Warg¶ 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
-Wpeut ê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-Winvalides 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
PYTHONWARNINGSet depuis un programme Python en utilisant le modulewarnings.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 -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 (par exemple.
-Wi,-Wd,-Wa,-We), l'interpréteur fait la résolution vers le nom adéquat.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
#!cmdnon 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 faulthandlerpour activerfaulthandler;-X showrefcountpour 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 tracemallocpour lancer le suivi des allocations mémoire par Python en utilisant le moduletracemalloc. 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=NFRAMEpour lancer le suivi avec une limite des traces à NFRAME appels. Voirtracemalloc.start()pour plus d'informations.-X showalloccountpour 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'optionCOUNT_ALLOCS.-X int_max_str_digitsconfigures the integer string conversion length limitation. See alsoPYTHONINTMAXSTRDIGITS.-X importtimeaffiche 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 estpython3 -X importtime -c 'import asyncio'. Voir aussiPYTHONPROFILEIMPORTTIME.-X dev: active le "mode développeur" de CPython, injectant des vérifications à l'exécution qui ne sont pas actives par défaut. Ce n'est pas plus verbeux que le mode par défaut si le code est correct : les avertissements supplémentaires ne sont émis que quand un problème est détecté. Effets du mode développeur :ajoute le filtre
defaultpour les avertissements, comme l'option-Wdefault.Installe des points d'entrée (hook en anglais) pour le débogage dans les allocateurs de mémoire : voir la fonction C
PyMem_SetupDebugHooks().Active le module
faulthandlerpour décharger la pile d'appels de Python en cas de crash.Active le mode de débogage d'asyncio.
Set the
dev_modeattribute ofsys.flagstoTrue.
-X utf8active le mode UTF-8 pour les interfaces avec le système d'exploitation, prenant le dessus sur le mode par défaut qui s'appuie sur la configuration régionale.-X utf8=0désactive explicitement le mode UTF-8 (même s'il avait du s'activer automatiquement). VoirPYTHONUTF8pour plus de détails.
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
-Xa été ajoutée.Nouveau dans la version 3.3: option
-X faulthandler.Nouveau dans la version 3.4: options
-X showrefcountet-X tracemalloc.Nouveau dans la version 3.6: option
-X showalloccount.Nouveau dans la version 3.7: les options
-X importtime,-X devet-X utf8.Nouveau dans la version 3.7.14: The
-X int_max_str_digitsoption.
1.1.4. Options à ne pas utiliser¶
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/pythonversionetpréfixe_exec/lib/pythonversionoùpréfixeetpréfixe_execsont des répertoires qui dépendent de l'installation (leur valeur par défaut étant/usr/local).Quand
PYTHONHOMEest défini à un simple répertoire, sa valeur remplace à la foispréfixeetpréfixe_exec. Pour spécifier des valeurs différentes à ces variables, définissezPYTHONHOMEà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
PATHdu shell : un ou plusieurs chemins de répertoires séparés paros.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
PYTHONPATHpeuvent 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(voirPYTHONHOMEci-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 variablesys.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 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.ps1etsys.ps2ainsi que le point d'entrée (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-Oplusieurs 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 nativebreakpoint(). 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 desys.breakpointhook()ne fait rien et s'interrompt immédiatement.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-dplusieurs 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.environpour 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-vplusieurs 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 de type chaine,bytesetdatetime.Si
PYTHONHASHSEEDest 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.
Nouveau dans la version 3.2.3.
-
PYTHONINTMAXSTRDIGITS¶ If this variable is set to an integer, it is used to configure the interpreter's global integer string conversion length limitation.
Nouveau dans la version 3.7.14.
-
PYTHONIOENCODING¶ Si la variable est définie sous la forme
nom_encodage:gestionnaire_erreuravant 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_encodageet:gestionnaire_erreursont facultatifs tous les deux et possèdent la même signification que dansstr.encode().Pour la sortie d'erreur, la partie
:gestionnaire_erreurest ignorée : le gestionnaire est toujours'backslashreplace'.Modifié dans la version 3.4: la partie
nom_encodageest 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
PYTHONLEGACYWINDOWSSTDIOne 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¶ Définit le répertoire
base utilisateur. Celui-ci est utilisé pour déterminer le chemin durépertoire site-packages propre à l'utilisateuret des schémas d'installation de Distutils pourpython 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 à cette 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-Wplusieurs 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=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¶ Si elle est définie à une chaîne non vide,
faulthandler.enable()est appelée au démarrage : ceci installe un gestionnaire pour les signauxSIGSEGV,SIGFPE,SIGABRT,SIGBUSetSIGILLafin de générer une trace de la pile d'appels. C'est équivalent à spécifier l'option-Xfaulthandler.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=1ne stocke que l'appel le plus récent. Voirtracemalloc.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 affiche le temps pris par les importations. C'est exactement équivalent à donner
-X importtimeen 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 points d'entrée (hooks en anglais) de débogage.
Définit la famille d'allocateurs mémoire utilisés par Python :
default: utilise les allocateurs de mémoire par défaut.malloc: utilise la fonctionmalloc()de la bibliothèque C standard pour tous les domaines (PYMEM_DOMAIN_RAW,PYMEM_DOMAIN_MEM,PYMEM_DOMAIN_OBJ).pymalloc: utilise l’allocateur pymalloc pour les domainesPYMEM_DOMAIN_MEMainsi quePYMEM_DOMAIN_OBJet utilise la fonctionmalloc()pour le domainePYMEM_DOMAIN_RAW.
Installe des points d'entrée de débogage :
debug: installe des points d'entrée de débogage pour l'allocateur de mémoire par défaut.malloc_debug: same asmallocbut also install debug hooks.pymalloc_debug: same aspymallocbut also install debug hooks.
Reportez-vous au chapitre default-memory-allocators et à la fonction
PyMem_SetupDebugHooks()(configure des points d'entrée de débogage sur les allocateurs de mémoire de Python).Modifié dans la version 3.7: l'allocateur
defaulta été ajouté.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
PYTHONMALLOCest utilisée pour forcer l'allocateurmalloc()de la bibliothèque C standard ou si Python est configuré sans le support depymalloc.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().Disponibilité : 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.
Disponibilité : Windows.
Nouveau 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égionaleLC_ALLest également non définie et que la configuration régionale indiquée dans la catégorieLC_TYPEest soit la région par défautC, soit la régionPOSIXqui 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égorieLC_TYPEdans l'ordre suivant avant de charger l'exécutable de l'interpréteur :C.UTF-8C.utf8UTF-8
Si la définition d'une des configurations régionales fonctionne, la variable d'environnement
LC_TYPEest 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 GNUreadline), 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 Pythonlocale.getdefaultlocale()).La configuration d'une de ces variables régionales (soit explicitement, soit via le mécanisme décrit ci-dessus) active automatiquement
surrogateescapepour la gestion des erreurs desys.stdinetsys.stdout(sys.stderrcontinue d'utiliserbackslashreplacecomme pour toute autre configuration régionale). Ce comportement relatif à la gestion des flux standards peut être surchargé, comme d'habitude, parPYTHONIOENCODING.À fin de débogage, définir
PYTHONCOERCECLOCALE=warnindique à Python d'émettre les messages d'avertissement surstderrsi 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,
PYTHONUTF8s'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 à utiliserASCIIen lieu et place deUTF-8pour les interfaces avec le système.Disponibilité : systèmes de type UNIX.
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
-Xdev.Nouveau dans la version 3.7.
-
PYTHONUTF8¶ Si elle vaut
1, active le mode UTF-8 pour l'interpréteur, oùUTF-8est utilisé pour encoder le texte en interface avec le système, quelle que soit la configuration régionale en vigueur.Ce qui signifie que :
sys.getfilesystemencoding()renvoie'UTF-8'(l'encodage défini par la configuration régionale est ignoré).locale.getpreferredencoding()renvoie'UTF-8'(l'encodage défini par la configuration régionale est ignoré et le paramètredo_setlocalede la fonction n'a aucun effet).sys.stdin,sys.stdoutetsys.stderrutilisent tous l'UTF-8 pour l'encodage du texte, avec le gestionnaire d'erreurssurrogateescapeactivé poursys.stdinetsys.stdout(sys.stderrcontinue d'utiliserbackslashreplacecomme pour le mode par défaut où il prend en compte la configuration régionale).
En raison des changements apportés à ces API de bas-niveau, les API de haut-niveau ont un comportement par défaut différent :
les arguments en ligne de commande, les variables d'environnement et les noms de fichiers sont décodés en texte en utilisant l'UTF-8.
os.fsdecode()etos.fsencode()utilisent l'encodage UTF-8.open(),io.open()etcodecs.open()utilisent l'encodage UTF-8 par défaut. Cependant, elles utilisent le gestionnaire d'erreurs "strict" par défaut, de manière à ce qu'ouvrir un fichier binaire en mode texte lève une exception plutôt que de produire de la donnée sans aucun sens.
Notez que la configuration des flux standards en mode UTF-8 peut être surchargée par
PYTHONIOENCODING(de la même manière qu'elles peuvent l'être dans le mode par défaut qui est configuré pour la région locale).Si elle vaut
0, l'interpréteur fonctionne dans le mode configuré pour la région locale (mode par défaut).Définir une valeur autre (non vide) entraine une erreur pendant l'initialisation de l'interpréteur.
Si cette variable d'environnement n'est pas définie, l'interpréteur se configure pour utiliser la configuration régionale en cours, à moins que cette configuration régionale ne soit identifiée comme ASCII (comme décrit pour
PYTHONCOERCECLOCALE), et que soit la contrainte est désactivée, soit elle échoue. Dans cette configuration régionale, l'interpréteur active par défaut le mode UTF-8 à moins que vous n'indiquiez explicitement de ne pas le faire.Également disponible en tant qu'option
-Xutf8.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.
