PYTHONPATH ajouter pendant le fonctionnement du module de ligne de commande - Python

StackOverflow https://stackoverflow.com/questions/4580101

  •  14-10-2019
  •  | 
  •  

Question

Je veux courir:

python somescript.py somecommand

Mais, quand je lance ce que j'ai besoin PYTHONPATH d'inclure un répertoire. Je ne peux pas simplement ajouter à mes variables d'environnement car le répertoire que je veux ajouter des changements en fonction de ce projet, je suis en cours d'exécution. Est-il possible de modifier PYTHONPATH lors de l'exécution d'un script? Note:. Je n'ai même pas une variable PYTHONPATH, donc je ne pas besoin de vous soucier de lui annexant vs ce remplaçant lors de la course de ce script

Était-ce utile?

La solution

Pour Mac / Linux;

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

Pour Windows, la configuration d'un pythonpath.bat d'emballage;

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

et le fichier script pythonpath.bat d'appel comme;

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

Autres conseils

 import sys
 sys.path.append('your certain directory')

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

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

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

S'il est sur une seule ligne, la valeur de l'environnement PYTHONPATH applique uniquement à la commande un.

$ 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

Vous pouvez essayer d'exécuter une fonction dans votre script

python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"

Ceci est pour les fenêtres:

Par exemple, j'ai un dossier nommé « mygrapher » sur mon bureau. A l'intérieur, il y a des dossiers appelés « calcul » et « représentation graphique » qui contiennent des fichiers Python que mon fichier principal « grapherMain.py » besoins. En outre, « grapherMain.py » est stocké dans « représentation graphique ». Pour exécuter tout sans déplacer les fichiers, je peux faire un script batch. Appelons ce fichier batch "rungraph.bat".

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

Ce script est situé dans "mygrapher". Pour exécuter les choses, je recevrais dans mon invite de commande, puis faites:

>cd Desktop\mygrapher (this navigates into the "mygrapher" folder)
>rungraph.bat (this executes the batch file)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top