Подтвердить что ты не робот

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

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

python somescript.py somecommand

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

4b9b3361

Ответ 1

Для 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 файл как;

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Прежде всего, чтобы сделать скрипт исполняемым без флага python, вам нужно добавить строку shebang в начале скрипта.

#!/usr/bin/python

# rest of your code...

Используя эту простую строку выше, вы указываете путь для интерпретатора Python, который вы хотите использовать. Это очень полезно, если у вас установлено несколько версий Python.

Теперь ваш скрипт можно запустить так:

<~/direcotry_of_script.py>$ ./script.py [options]

При запуске сценария с ./ вы можете получить ошибку, если у вас нет прав на выполнение. Для этого вы можете использовать sudo chmod 744 <scriptname>, чтобы дать корневому пространству имен разрешения на выполнение.

Теперь для актуального предложения! (для Linux)

Вы можете просто добавить свой скрипт в каталог /usr/local/bin. Затем этот сценарий может быть выполнен в любом месте файловой системы. Увидеть ниже:

$ script.py [options]

Совет: script.py может быть переименован в простой скрипт и использоваться следующим образом:

$ script [options]

Ответ 6

Это для окон:

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

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

Этот script находится в "mygrapher". Чтобы запускать вещи, я должен войти в свою командную строку, а затем сделать:

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