Question

Comment puis-je savoir quels répertoires sont répertoriés dans mon système de variable PYTHONPATH, à partir d'un script Python (ou le shell interactif)?

Était-ce utile?

La solution

sys.path pourrait inclure des éléments qui ne sont pas spécifiquement dans votre variable d'environnement PYTHONPATH. Pour interroger la variable directement, utilisez:

import os
try:
    user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
    user_paths = []

Autres conseils

Vous voulez probablement aussi ceci:

import sys
print(sys.path)

Ou comme une doublure à partir du terminal:

python -c "import sys; print('\n'.join(sys.path))"

peut sembler ne pas modifier l'autre réponse. A une petite erreur en ce qu'elle est Windows uniquement. La solution la plus générique est d'utiliser os.sep comme ci-dessous:

sys.path pourrait inclure des éléments qui ne sont pas spécifiquement dans votre variable d'environnement PYTHONPATH. Pour interroger la variable directement, utilisez:

import os
os.environ['PYTHONPATH'].split(os.pathsep)

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 3ème partie figurant dans le « sys.path » de Python.

Comme toutes les autres variables d'environnement, vous pouvez l'exporter décortiqués dans ~ / .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 la coquille sous la forme

$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite

ALORS =>

/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 à plusieurs chemins, voir .

Notez que l'on peut ajouter ou supprimer un chemin de recherche par sys.path.insert (), del ou supprimer () au moment de l'exécution, mais pas par 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 une façon de spécifier le chemin de recherche Python (s) pour les modules importés dans sys.path. Vous pouvez également appliquer les opérations de liste directement à sys.path sans l'aide de PYTHONPATH.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top