Временная PYTHONPATH в Windows - PullRequest
5 голосов
/ 25 мая 2010

Как временно установить переменную среды PYTHONPATH непосредственно перед выполнением скрипта Python?

В * nix я могу сделать это:

$ PYTHONPATH='.' python scripts/doit.py

В Windows этот синтаксис не работает, конечно. Что эквивалентно, хотя?

Ответы [ 4 ]

8 голосов
/ 25 мая 2010

Установка и восстановление переменной среды в командной строке 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).

6 голосов
/ 25 мая 2010

Как временно? Если вы открываете консоль Windows (cmd.exe), наберите:

set PYTHONPATH=.

изменит PYTHONPATH только для этой консоли и всех дочерних процессов, созданных из нее. Любые скрипты Python, запускаемые из этой консоли, будут использовать новое значение PYTHONPATH. Закройте консоль, и изменение будет забыто.

1 голос
/ 25 мая 2010

Вы используете SET в Windows:

SET PYTHONPATH=.
python scripts/doit.py
1 голос
/ 25 мая 2010

В Windows вы можете установить PYTHONPATH как переменную окружения, которая имеет интерфейс GUI. В большинстве версий Windows вы можете запустить правой кнопкой мыши Мой компьютер и правой кнопкой мыши щелкнуть Свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...