Python - добавить PYTHONPATH во время запуска модуля командной строки - PullRequest
76 голосов
/ 02 января 2011

Я хочу запустить:

python somescript.py somecommand

Но когда я запускаю это, мне нужно PYTHONPATH, чтобы включить определенный каталог. Я не могу просто добавить его в мои переменные среды, потому что каталог, в который я хочу добавить изменения, зависит от того, какой проект я запускаю. Есть ли способ изменить PYTHONPATH при запуске скрипта? Примечание: у меня даже нет переменной PYTHONPATH, поэтому мне не нужно беспокоиться о добавлении к ней, а не о переопределении во время выполнения этого скрипта.

Ответы [ 5 ]

125 голосов
/ 02 января 2011

Для Mac / Linux;

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

Для Windows установите оболочку pythonpath.bat;

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

и вызовите pythonpath.bat файл сценария как;

pythonpath.bat /foo/bar/baz somescript.py somecommand
44 голосов
/ 02 января 2011
 import sys
 sys.path.append('your certain directory')

В основном sys.path - это список со всеми путями поиска для модулей Python.Инициализируется переводчиком.Содержимое PYTHONPATH автоматически добавляется в конец этого списка.

7 голосов
/ 02 января 2011

Если вы запускаете команду из POSIX-совместимой оболочки, например, bash, вы можете установить переменную среды следующим образом:

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

Если все это в одной строке, значение среды PYTHONPATHприменяется только к этой одной команде.

$ 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
0 голосов
/ 03 сентября 2017

Вы можете попробовать выполнить эту функцию внутри вашего скрипта

python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"
0 голосов
/ 02 сентября 2011

Это для windows:

Например, у меня на рабочем столе есть папка с именем «mygrapher».Внутри есть папки, называемые «вычисления» и «графики», которые содержат файлы Python, которые нужны моему основному файлу «grapherMain.py».Кроме того, "grapherMain.py" хранится в "графике".Чтобы запустить все без перемещения файлов, я могу сделать пакетный скрипт.Давайте назовем этот пакетный файл «rungraph.bat».

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

Этот скрипт находится в «mygrapher».Чтобы запустить что-то, я бы попал в командную строку и затем:

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