Je veux courir:
python somescript.py somecommand
Mais, quand je lance cela, je dois PYTHONPATH
inclure un certain répertoire. Je ne peux pas simplement l'ajouter à mes variables d'environnement parce que 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 PYTHONPATH
variable, donc je n'ai pas à m'inquiéter de l'ajouter ou de la remplacer pendant l'exécution de ce script.
python
pythonpath
orokusaki
la source
la source
PYTHONPATH=/foo/bar python somescript.py somecommand
python -c"import sys;sys.path.append('/my/dir')"
et ensuitepython myscript.py mycommand
, mais il ne partage évidemment pas le chemin de la première session d'interprétation avec la suivante. Ah, je viens de voir votre prochain commentaire, j'essaye maintenant ... Cela n'a pas fonctionné sur WinXP.unset
commande de variable d'environnement sous Windows. Au lieu de cela, ajoutez unsetlocal
après l'initialeecho off
, puis un impliciteendlocal
se produira lorsque le script .bat se terminera (etPYTHONPATH
sera restauré à sa valeur précédente).PYTHONPATH
, vous pouvez utiliserset PYTHONPATH=%PYTHONPATH%;%1
.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éteur. Le contenu de PYTHONPATH est automatiquement ajouté à la fin de cette liste.
la source
sys.path.append(r'D:\PyCharmProjects\cheese_shoppe')
exemple dans Windows.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 s'applique uniquement à cette 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
la source
python -c "import sys; sys.path.insert(0,'my/path'); import mymodule"
ne fonctionnait pas.Vous pouvez essayer ceci pour exécuter une fonction dans votre script
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"
la source
Ceci 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 "graphing" qui contiennent des fichiers Python dont mon fichier principal "grapherMain.py" a besoin. De plus, "grapherMain.py" est stocké dans "graphing". Pour tout exécuter sans déplacer de fichiers, je peux créer 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 se trouve dans "mygrapher". Pour exécuter les choses, j'entrerais dans mon invite de commande, puis ferais:
>cd Desktop\mygrapher (this navigates into the "mygrapher" folder) >rungraph.bat (this executes the batch file)
la source