Python-добавить PYTHONPATH во время запуска модуля командной строки


Я хочу работать:

python somescript.py somecommand

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

5 61

5 ответов:

Для 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 script file like;

pythonpath.bat /foo/bar/baz somescript.py somecommand
 import sys
 sys.path.append('your certain directory')

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

Если вы выполняете команду из 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

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

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

Это для windows:

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

@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)