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 ?
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 .
vous pouvez utiliser:
import os
path = 'the path you want'
os.environ['PATH'] += ':'+path
changement temporaire de dirs fonctionne bien pour l'importation:
cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)
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.
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