Я хочу бежать:
python somescript.py somecommand
Но когда я запускаю это, мне нужно PYTHONPATH
включить определенный каталог. Я не могу просто добавить его в свои переменные среды, потому что каталог, в который я хочу добавить изменения, зависит от того, какой проект я запускаю. Есть ли способ изменить PYTHONPATH
при запуске скрипта? Примечание: у меня даже нет PYTHONPATH
переменной, поэтому мне не нужно беспокоиться о добавлении к ней, а не о замене ее во время выполнения этого скрипта.
python
pythonpath
орокусаки
источник
источник
PYTHONPATH=/foo/bar python somescript.py somecommand
python -c"import sys;sys.path.append('/my/dir')"
и потомpython myscript.py mycommand
, но он явно не разделяет путь от первого сеанса интерпретатора со следующим. Ах, только что видел ваш следующий комментарий, сейчас пытаюсь ... Не работает на WinXP.unset
Windows нет команды переменной среды. Вместо этого добавьтеsetlocal
после начального,echo off
и тогда неявноеendlocal
будет происходить, когда сценарий .bat завершится (иPYTHONPATH
будет восстановлен до своего предыдущего значения).PYTHONPATH
, вы можете использоватьset PYTHONPATH=%PYTHONPATH%;%1
.import sys sys.path.append('your certain directory')
По сути sys.path - это список со всеми путями поиска для модулей Python. Инициализируется интерпретатором. Содержимое PYTHONPATH автоматически добавляется в конец этого списка.
источник
sys.path.append(r'D:\PyCharmProjects\cheese_shoppe')
пример в Windows.Если вы запускаете команду из 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.insert(0,'my/path'); import mymodule"
не получилось.Вы можете попробовать это, чтобы выполнить функцию внутри вашего скрипта
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"
источник
Это для окон:
Например, у меня на рабочем столе есть папка 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)
источник