Как я устанавливаю, временно, переменную среды PYTHONPATH прежде, чем выполнить сценарий Python?
В *отклоняют, я могу сделать это:
$ PYTHONPATH='.' python scripts/doit.py
В Windows этот синтаксис не работает, конечно. Каков эквивалент, хотя?
Для установки и восстановления переменной окружения в командной строке Windows требуется, к сожалению, "несколько мучительный" подход...:
SET SAVE=%PYTHONPATH%
SET PYTHONPATH=.
python scripts/doit.py
SET PYTHONPATH=%SAVE%
Чтобы сделать это менее болезненным, можно использовать небольшой вспомогательный скрипт Python, например,
import os
import sys
import subprocess
for i, a in enumerate(sys.argv[1:]):
if '=' not in a: break
name, _, value = a.partition('=')
os.environ[name] = value
sys.exit(subprocess.call(sys.argv[i:]))
который будет вызываться, как, например,
python withenv.py PYTHONPATH=. python scripts/doit.py
(Я написал это так, чтобы это работало для любого подпроцесса, а не только для Python-скрипта - если вас интересуют только Python-скрипты, вы можете опустить второй python в cal и поместить 'python' в sys.argv[i-1]
в коде, затем использовать sys.argv[i-1:]
в качестве аргумента для subprocess.call).
В Windows вы можете установить PYTHONPATH как переменную среды, которая имеет интерфейс GUI. В большинстве версий Windows вы можете запустить, щелкнув правой кнопкой мыши «Мой компьютер» и щелкнув правой кнопкой мыши «Свойства».
Вы используете SET
в Windows:
SET PYTHONPATH=.
python scripts/doit.py
Как временно? Если вы откроете консоль Windows (cmd.exe), набрав:
set PYTHONPATH=.
, PYTHONPATH изменится только для этой консоли и всех дочерних процессов, созданных на ее основе. Любые сценарии python, запускаемые с этой консоли, будут использовать новое значение PYTHONPATH. Закройте консоль, и изменение будет забыто.