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/

Le format des lignes de commandes utilisées par d’autres implémentations peut être différent. Voir Alternate Implementations pour plus d’informations.

1.1. Ligne de commande

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

python [-bBdEiOQsRStuUvVWxX3?] [-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 (un 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 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 nommé d’une certaine façon depuis 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 listes des options consommées par l’interpréteur ; tous les arguments échoueront 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 debut de ligne sont significatifs, comme dans le code d’un module.

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

-m <module-name>

Parcourir sys.path à la recherche du module donné et exécuter 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 devrait être un nom de module Python valide, mais l’implémentation n’est pas tenue de le vérifier (par exemple, l’utilisation d’un trait d’union peut être autorisée).

Les noms de paquets sont aussi autorisés. Quand un nom de paquet est donné à la place d’un module habituel, l’interpréteur exécutera <pkg>.__main comme module principal. Ce comportement est délibérement identique que pour un répertoire on un fichier zip donné à l’interpréteur comme argument à exécuter.

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ées pour les modules pré-complilé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 sera le chemin complet d’accès au fichier du module. Comme pour l’option -c, le répertoire courant sera 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()
Equivalent functionality directly available to Python code

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

Nouveau dans la version 2.4.

Modifié dans la version 2.5: The named module can now be located inside a package.

Modifié dans la version 2.7: Supply the package name to run a __main__ submodule. sys.argv[0] is now set to "-m" while searching for the module (it was previously incorrectly set to "-c")

-

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

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

Voir aussi

runpy.run_path()
Equivalent functionality directly available to Python code
<script>

Exécute le code Python contenu dans script, qui doit être un chemin d’accès au fichier (absolu ou relatif), se référant à 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 sera le nom du script comme 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__.

Modifié dans la version 2.5: Directories and zipfiles containing a __main__.py file at the top level are now considered valid Python scripts.

Si aucune option d’interface est donnée, -i est implicite, sys.argv[0] est une chaine vide ("") et le répertoire courant sera ajouté au début de sys.path.

1.1.2. Options génériques

-?
-h
--help

Affiche une brève description de toutes les options de ligne de commande.

Modifié dans la version 2.5: The --help variant.

-V
--version

Affiche seulement la version de Python. Par exemple :

Python 2.5.1

Modifié dans la version 2.5: The --version variant.

1.1.3. Options diverses

-b

Issue a warning when comparing unicode with bytearray. Issue an error when the option is given twice (-bb).

Note that, unlike the corresponding Python 3.x flag, this will not emit warnings for comparisons between str and unicode. Instead, the str instance will be implicitly decoded to unicode and Unicode comparison used.

Nouveau dans la version 2.6.

-B

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

Nouveau dans la version 2.6.

-d

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

-E

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

Nouveau dans la version 2.2.

-i

Quand un script est passé comme premier argument ou que l’option -c est utilisée, entrer 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.

-O

Activer les optimisations de base. Cela modifie l’extension du fichier pour les fichiers compilés (bytecode) de .pyc à .pyo. Voir aussi PYTHONOPTIMIZE.

-OO

Supprimer les docstrings en plus des optimisations réalisés par -O.

-Q <arg>

Division control. The argument must be one of the following:

old
division of int/int and long/long return an int or long (default)
new
new division semantics, i.e. division of int/int and long/long returns a float
warn
old division semantics with a warning for int/int and long/long
warnall
old division semantics with a warning for all uses of the division operator

Voir aussi

Tools/scripts/fixdiv.py
for a use of warnall

PEP 230 – Gestion des alertes

-R

Turn on hash randomization, so that the __hash__() values of str, bytes and datetime 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.

This 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(n^2) complexity. See http://www.ocert.org/advisories/ocert-2011-003.html for details.

Changing hash values affects the order in which keys are retrieved from a dict. Although Python has never made guarantees about this ordering (and it typically varies between 32-bit and 64-bit builds), enough real-world code implicitly relies on this non-guaranteed behavior that the randomization is disabled by default.

Voir aussi PYTHONHASHSEED.

Nouveau dans la version 2.6.8.

-s

Ne pas ajouter le user site-packages directory à sys.path.

Nouveau dans la version 2.6.

Voir aussi

PEP 370 – Per user site-packages directory

-S

Désactiver l’importation du module site et les modifications de sys.path spécifiques au site qu’elle implique.

-t

Issue a warning when a source file mixes tabs and spaces for indentation in a way that makes it depend on the worth of a tab expressed in spaces. Issue an error when the option is given twice (-tt).

-u

Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, also put stdin, stdout and stderr in binary mode.

Note that there is internal buffering in file.readlines() and Objets fichiers (for line in sys.stdin) which is not influenced by this option. To work around this, you will want to use file.readline() inside a while 1: loop.

Voir aussi PYTHONUNBUFFERED.

-v

Print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded. When given twice (-vv), print a message for each file that is checked for when searching for a module. Also provides information on module cleanup at exit. See also PYTHONVERBOSE.

-W arg

Warning control. Python’s warning machinery by default prints warning messages to sys.stderr. A typical warning message has the following form:

file:line: category: message

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

Multiple -W options may be given; when a warning matches more than one option, the action for the last matching option is performed. Invalid -W options are ignored (though, a warning message is printed about invalid options when the first warning is issued).

Starting from Python 2.7, DeprecationWarning and its descendants are ignored by default. The -Wd option can be used to re-enable them.

Warnings can also be controlled from within a Python program using the warnings module.

The simplest form of argument is one of the following action strings (or a unique abbreviation) by themselves:

ignore
Ignorer tous les avertissements.
default
Explicitly request the default behavior (printing each warning once per source line).
all
Affiche un avertissement à chaque fois qu’il se produit (ce qui peut générer beaucoup de messages si l’avertissement est déclenché à plusieurs reprises, comme à l’intérieur d’une boucle).
module
Affiche chaque avertissement uniquement la première fois qu’il apparaît dans chaque module.
once
Affiche chaque avertissement uniquement la première fois qu’il apparaît dans le programme.
error
Déclenche une exception au lieu d’afficher un message d’avertissement.

La forme complète de l’argument est :

action:message:category:module:line

Ici, action est tel qu’expliqué ci-dessus, mais s’applique uniquement aux messages qui correspondent aux champs restants. Les champs vides correspondent à toutes les valeurs ; les champs vides de fin peuvent être omis. Le champ message correspond au début du message d’avertissement affiché, cette expression est insensible à la casse. Le champ category correspond à la catégorie d’avertissement. Ce nom doit être un nom complet de classe ; La règle s’applique à tous les messages d’alertes construits avec une classe héritante de celle spécifiée. Le nom de la classe complète doit être donnée. Le champ module correspond au nom (pleinement qualifié) du module, cette correspondance est sensible à la casse. Le champ line correspond au numéro de ligne, où zéro correspond à n’importe quel numéro de ligne et correspond donc à l’option par défaut.

Voir aussi

warnings – the warnings module

PEP 230 – Gestion des alertes

PYTHONWARNINGS

-x

Skip the first line of the source, allowing use of non-Unix forms of #!cmd. This is intended for a DOS specific hack only.

Note

Les numéros de ligne dans les messages d’erreur seront décalés de un.

-3

Warn about Python 3.x possible incompatibilities by emitting a DeprecationWarning for features that are removed or significantly changed in Python 3 and can’t be detected using static code analysis.

Nouveau dans la version 2.6.

See Porting Python 2 Code to Python 3 for more details.

1.1.4. Options que vous ne devriez pas utiliser

-J

Utilisation réservée à Jython.

-U

Turns all string literals into unicodes globally. Do not be tempted to use this option as it will probably break your world. It also produces .pyc files with a different magic number than normal. Instead, you can enable unicode literals on a per-module basis by using:

from __future__ import unicode_literals

at the top of the file. See __future__ for details.

-X

Reserved for alternative implementations of Python to use for their own purposes.

1.2. Variables d’environnement

These environment variables influence Python’s behavior, they are processed before the command-line switches other than -E. It is customary that command-line switches override environmental variables where there is a conflict.

PYTHONHOME

Change the location of the standard Python libraries. By default, the libraries are searched in prefix/lib/pythonversion and exec_prefix/lib/pythonversion, where prefix and exec_prefix are installation-dependent directories, both defaulting to /usr/local.

When PYTHONHOME is set to a single directory, its value replaces both prefix and exec_prefix. To specify different values for these, set PYTHONHOME to prefix:exec_prefix.

PYTHONPATH

Augment the default search path for module files. The format is the same as the shell’s PATH: one or more directory pathnames separated by os.pathsep (e.g. colons on Unix or semicolons on Windows). Non-existent directories are silently ignored.

In addition to normal directories, individual PYTHONPATH entries may refer to zipfiles containing pure Python modules (in either source or compiled form). Extension modules cannot be imported from zipfiles.

The default search path is installation dependent, but generally begins with prefix/lib/pythonversion (see PYTHONHOME above). It is always appended to PYTHONPATH.

An additional directory will be inserted in the search path in front of PYTHONPATH as described above under Options de l’interface. The search path can be manipulated from within a Python program as the variable sys.path.

PYTHONSTARTUP

If this is the name of a readable file, the Python commands in that file are executed before the first prompt is displayed in interactive mode. The file is executed in the same namespace where interactive commands are executed so that objects defined or imported in it can be used without qualification in the interactive session. You can also change the prompts sys.ps1 and sys.ps2 in this file.

PYTHONY2K

Set this to a non-empty string to cause the time module to require dates specified as strings to include 4-digit years, otherwise 2-digit years are converted based on rules described in the time module documentation.

PYTHONOPTIMIZE

If this is set to a non-empty string it is equivalent to specifying the -O option. If set to an integer, it is equivalent to specifying -O multiple times.

PYTHONDEBUG

If this is set to a non-empty string it is equivalent to specifying the -d option. If set to an integer, it is equivalent to specifying -d multiple times.

PYTHONINSPECT

If this is set to a non-empty string it is equivalent to specifying the -i option.

This variable can also be modified by Python code using os.environ to force inspect mode on program termination.

PYTHONUNBUFFERED

If this is set to a non-empty string it is equivalent to specifying the -u option.

PYTHONVERBOSE

If this is set to a non-empty string it is equivalent to specifying the -v option. If set to an integer, it is equivalent to specifying -v multiple times.

PYTHONCASEOK

If this is set, Python ignores case in import statements. This only works on Windows, OS X, OS/2, and RiscOS.

PYTHONDONTWRITEBYTECODE

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

Nouveau dans la version 2.6.

PYTHONHASHSEED

If this variable is set to random, the effect is the same as specifying the -R option: a random value is used to seed the hashes of str, bytes and datetime objects.

If PYTHONHASHSEED is set to an integer value, it is used as a fixed seed for generating the hash() of the types covered by the hash randomization.

Its purpose is to allow repeatable hashing, such as for selftests for the interpreter itself, or to allow a cluster of python processes to share hash values.

The integer must be a decimal number in the range [0,4294967295]. Specifying the value 0 will lead to the same hash values as when hash randomization is disabled.

Nouveau dans la version 2.6.8.

PYTHONIOENCODING

Overrides the encoding used for stdin/stdout/stderr, in the syntax encodingname:errorhandler. The :errorhandler part is optional and has the same meaning as in str.encode().

Nouveau dans la version 2.6.

PYTHONNOUSERSITE

If this is set, Python won’t add the user site-packages directory to sys.path.

Nouveau dans la version 2.6.

Voir aussi

PEP 370 – Per user site-packages directory

PYTHONUSERBASE

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

Nouveau dans la version 2.6.

Voir aussi

PEP 370 – Per user site-packages directory

PYTHONEXECUTABLE

If this environment variable is set, sys.argv[0] will be set to its value instead of the value got through the C runtime. Only works on Mac OS X.

PYTHONWARNINGS

This is equivalent to the -W option. If set to a comma separated string, it is equivalent to specifying -W multiple times.

PYTHONHTTPSVERIFY

If this environment variable is set specifically to 0, then it is equivalent to implicitly calling ssl._https_verify_certificates() with enable=False when ssl is first imported.

Refer to the documentation of ssl._https_verify_certificates() for details.

Nouveau dans la version 2.7.12.

1.2.1. Debug-mode variables

Setting these variables only has an effect in a debug build of Python, that is, if Python was configured with the --with-pydebug build option.

PYTHONTHREADDEBUG

If set, Python will print threading debug info.

Modifié dans la version 2.6: Previously, this variable was called THREADDEBUG.

PYTHONDUMPREFS

If set, Python will dump objects and reference counts still alive after shutting down the interpreter.

PYTHONMALLOCSTATS

If set, Python will print memory allocation statistics every time a new object arena is created, and on shutdown.

PYTHONSHOWALLOCCOUNT

If set and Python was compiled with COUNT_ALLOCS defined, Python will dump allocations counts into stderr on shutdown.

Nouveau dans la version 2.7.15.

PYTHONSHOWREFCOUNT

If set, Python will print the total reference count when the program finishes or after each statement in the interactive interpreter.

Nouveau dans la version 2.7.15.