2009-09-28 9 views
249

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

+20

Je ne suis pas sûr de ce que Essayez-vous de le faire, mais si vous voulez savoir quels dossiers sont utilisés pour rechercher des modules importés, vous ne devriez pas vous fier à 'PYTHONPATH'. Utilisez 'sys.path' pour cela. – Vanuan

+0

Par simple expérience, j'ai trouvé la réponse de Vanuan ci-dessous (impression sys.path) imprime simplement PYTHONPATH. Cela fonctionne après avoir modifié la valeur en utilisant add_path (new_path) qui ajoute à PYTHONPATH. –

+4

Le titre de cet article et le corps posent deux questions différentes. 'sys.path' est" Une liste de chaînes qui spécifie le chemin de recherche pour les modules "- https://docs.python.org/2/library/sys.html#sys.path. PYTHONPATH est une variable d'environnement qui affecte cette liste. Par une définition raisonnable 'sys.path' est votre" chemin python ". – spinkus

Répondre

166

sys.path peut inclure des éléments qui ne se trouvent 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 = [] 
+1

(ou, plus génériquement ... split (os.sep)). Tu ne peux pas comprendre pourquoi tu n'obtiens pas l'amour, Mark. Votre réponse est techniquement plus précise que la propre réponse de Paul D Waite à sa question ???? – mjv

+0

Ah, excellent. Merci les gars, je me doutais que je faisais quelque chose de mal. J'ai supprimé ma mauvaise réponse; Mark, si vous pouviez éditer votre réponse pour inclure le bit os.sep, les points seront à vous. –

+4

os.sep est incorrect, voir http://stackoverflow.com/questions/1499019/how-to-get-the-path-separator-in-python –

11

Impossible de modifier l'autre réponse. A une erreur mineure en ce que c'est Windows seulement. La solution la plus générique est d'utiliser os.sep comme suit:

sys.path peut 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) 
+4

Pour les futurs lecteurs: 'os.sep' renvoie le séparateur de répertoire pour le système d'exploitation , par exemple '/'. Le séparateur utilisé dans le chemin Python est différent et renvoyé par 'os.pathsep' comme indiqué dans la réponse acceptée. –

+0

aucune raison pour le 'import sys' ici, non? – Nathan

412

Vous voudrez probablement aussi ceci:

import sys 
print(sys.path) 

Ou comme une doublure du terminal:

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

Même. Linux aaa.com 2.6.18-4-686-bigmem # 1 SMP Wed Juin 6 09:41:07 UTC 2007 i686 GNU/Linux ... Debian Sarge – Spechal

+6

Ceci est le moyen indépendant de la plate-forme et de l'environnement pour obtenir le courant chemin python d'exécution. –

+9

Cette réponse était beaucoup plus utile pour ma situation que la réponse acceptée. Je sais ce que sont mes variables d'environnement. J'avais besoin de savoir où python a décidé de pointer en plus de ma variable d'environnement. – Vorticity