ajouter un répertoire à sys.path / PYTHONPATH

j'essaie d'importer un module à partir d'un répertoire particulier.

Le problème est que si j'utilise sys.path.append(mod_directory) pour ajouter le chemin d'accès, puis ouvrez l'interpréteur python, le répertoire mod_directory est ajouté à la fin de la liste sys.chemin. Si j'exporte la variable PYTHONPATH avant d'ouvrir l'interpréteur python, le répertoire est ajouté au début de la liste. Dans ce dernier cas, je peux importer le module, mais dans le PREMIER, Je ne peux pas.

quelqu'un peut-il expliquer pourquoi cela se produit et me donner une solution pour ajouter le mod_directory au départ, à l'intérieur de un script python ?

82
demandé sur dreftymac 2013-04-20 02:27:28

5 réponses

cela fonctionne comme indiqué. Tous les chemins spécifiés dans PYTHONPATH sont documentés comme venant normalement après le répertoire de travail mais avant les chemins standard fournis par l'interpréteur. sys.path.append() ajoute au chemin existant. Voir ici et ici . Si vous voulez qu'un répertoire particulier Vienne en premier, il suffit de l'insérer à la tête de sys.chemin d'accès:

import sys
sys.path.insert(0,'/path/to/mod_directory')

cela dit, il y a généralement de meilleures façons de Gérer les importations que ce soit en utilisant PYTHONPATH ou en manipulant sys.path directement. Voir, par exemple, les réponses à cette question .

113
répondu Ned Deily 2017-05-23 12:18:20

vous pouvez utiliser:

import os
path = 'the path you want'
os.environ['PATH'] += ':'+path
2
répondu Δημητρης Παππάς 2017-08-05 12:47:10

changement temporaire de dirs fonctionne bien pour l'importation:

cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)
1
répondu user3517603 2018-02-16 16:19:01

quant à moi, j'ai besoin de caffe pour mon chemin python. Je peux ajouter son chemin au fichier /home/xy/.bashrc par ajouter

export PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH .

à mon dossier /home/xy/.bashrc .

Mais quand j'utilise pycharm, le chemin n'est pas encore dans.

pour que je puisse ajouter un chemin à la variable PYTHONPATH , par exécution -> modifier la Configuration.

enter image description here

1
répondu Jayhello 2018-07-16 08:47:43

lors de L'exécution D'un script Python depuis Powershell sous Windows, cela devrait fonctionner:

$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"

# Now run the actual script
python your_script.py
0
répondu Alexander Pacha 2018-02-23 16:19:53