111 votes

Python - ajouter PYTHONPATH pendant l'exécution du module de ligne de commande

Je veux courir:

 python somescript.py somecommand
 

Mais, lorsque je lance ceci, j'ai besoin de PYTHONPATH pour inclure un certain répertoire. Je ne peux pas simplement l'ajouter à mes variables d'environnement car le répertoire dans lequel je souhaite ajouter des modifications en fonction du projet que j'exécute. Existe-t-il un moyen de modifier PYTHONPATH lors de l'exécution d'un script? Remarque: Je n'ai même pas de variable PYTHONPATH , donc je n'ai pas besoin de m'inquiéter de l'ajouter à la remplacer lors de l'exécution de ce script.

184voto

ismail Points 19146

Pour Mac / Linux;

 PYTHONPATH=/foo/bar/baz python somescript.py somecommand
 

Pour Windows, configurez un wrapper pythonpath.bat ;

 @ECHO OFF
setlocal
set PYTHONPATH=%1
python %2 %3
endlocal
 

et appelez pythonpath.bat fichier de script comme;

 pythonpath.bat /foo/bar/baz somescript.py somecommand
 

53voto

Piotr Czapla Points 8626
  import sys
 sys.path.append('your certain directory')
 

Fondamentalement, sys.path est une liste avec tous les chemins de recherche pour les modules python. Il est initialisé par l'interprète. Le contenu de PYTHONPATH est automatiquement ajouté à la fin de cette liste.

20voto

Ned Deily Points 40248

Si vous exécutez la commande à partir d'un shell compatible POSIX, comme bash , vous pouvez définir la variable d'environnement comme ceci:

 PYTHONPATH="/path/to" python somescript.py somecommand
 

Si tout est sur une seule ligne, la valeur d'environnement PYTHONPATH ne s'applique qu'à cette seule commande.

 $ echo $PYTHONPATH

$ python -c 'import sys;print("/tmp/pydir" in sys.path)'
False
$ PYTHONPATH=/tmp/pydir python -c 'import sys;print("/tmp/pydir" in sys.path)'
True
$ echo $PYTHONPATH
 

-1voto

Jack Points 816

C'est pour windows:

Par exemple, j'ai un dossier nommé "mygrapher" sur mon bureau. À l'intérieur, il y a des dossiers appelés "calcul" et "graphique" qui contiennent des fichiers Python que mon fichier principal "grapherMain.py" les besoins. Aussi, "grapherMain.py" est stocké dans "graphique". Tout sans déplacer les fichiers, je peux faire un script de commandes. Appelons ce fichier de commandes "rungraph.chauve-souris".

@ECHO OFF
setlocal
set PYTHONPATH=%cd%\grapher;%cd%\calculation
python %cd%\grapher\grapherMain.py
endlocal

Ce script est situé dans la "mygrapher". Pour tourner les choses, je reçois dans mon invite de commande, puis faire:

>cd Desktop\mygrapher (this navigates into the "mygrapher" folder)
>rungraph.bat (this executes the batch file)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X