Python - добавить PYTHONPATH во время запуска модуля командной строки
Я хочу запустить:
python somescript.py somecommand
Но, когда я запускаю это, мне нужно PYTHONPATH
включить определенный каталог. Я не могу просто добавить его в переменные среды, потому что в каталог я хочу добавлять изменения в зависимости от того, какой проект я запускаю. Есть ли способ изменить PYTHONPATH
во время работы script? Примечание. У меня даже нет переменной PYTHONPATH
, поэтому мне не нужно беспокоиться о добавлении к ней и ее переопределении во время запуска этого script.
Ответы
Ответ 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)