PYTHONPATH est une variable d'environnement dont la valeur est une liste de répertoires. Une fois défini, il est utilisé par Python pour rechercher des modules importés, ainsi que d'autres std. et les répertoires de bibliothèques tierces répertoriés dans "sys.path" de Python.
Comme toute autre variable d'environnement, vous pouvez l'exporter en shell ou en ~ / .bashrc, voir ici . Vous pouvez interroger os.environ ['PYTHONPATH'] pour sa valeur en Python comme indiqué ci-dessous:
$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"
SI défini dans le shell comme
$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite
ALORS résultat =>
/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
ELSE résultat =>
PYTHONPATH is not defined
Pour définir PYTHONPATH sur plusieurs chemins, voir ici .
Notez que l'on peut ajouter ou supprimer un chemin de recherche via sys.path.insert (), del ou remove () au moment de l'exécution, mais PAS via os.environ []. Exemple:
>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // It's there
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>>
En résumé, PYTHONPATH est un moyen de spécifier le ou les chemins de recherche Python pour les modules importés dans sys.path. Vous pouvez également appliquer des opérations de liste directement à sys.path sans l'aide de PYTHONPATH.
PYTHONPATH
. Utilisezsys.path
pour cela.