2010-05-25 12 views
5

Jak tymczasowo ustawić zmienną środowiskową PYTHONPATH tuż przed wykonaniem skryptu w języku Python?Tymczasowa PYTHONPATH w systemie Windows

W * nix, mogę to zrobić:

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

W Windows składnia ta nie działa, oczywiście. Czym jest jednak odpowiednik?

Odpowiedz

8

Aby ustawić i przywrócić zmienną środowiskową w wierszu polecenia systemu Windows' wymaga podejścia jest niestety "nieco torturous" ...:

SET SAVE=%PYTHONPATH% 
SET PYTHONPATH=. 
python scripts/doit.py 
SET PYTHONPATH=%SAVE% 

Mogłabyś użyj trochę pomocniczego skryptu w Pythonie, aby uczynić go mniej bolesnym, np

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:])) 

nazywać jak np

python withenv.py PYTHONPATH=. python scripts/doit.py 

(mam zakodowane go tak, że pracuje dla żadnego podproces, a nie tylko skryptu Python - jeśli tylko dbają o skryptów Pythona możesz pominąć drugi python w calu i wstawić "python" w sys.argv[i-1] w kodzie, a następnie użyć sys.argv[i-1:] jako argumentu dla podprocesu.call).

+0

Hm. Trochę więcej niż to, czego potrzebuję, ale dzięki! Spróbuję tego jutro. – Santa

1

W systemie Windows można ustawić PYTHONPATH jako zmienną środowiskową, która ma interfejs użytkownika GUI. W większości wersji systemu Windows możesz uruchomić klikając prawym przyciskiem myszy Mój komputer i prawym przyciskiem myszy kliknij Właściwości.

1

użyć SET w systemie Windows:

SET PYTHONPATH=. 
python scripts/doit.py 
6

Jak tymczasowo? Po otwarciu konsoli Windows (cmd.exe), wpisując:

set PYTHONPATH=. 

zmieni PYTHONPATH tylko dla tej konsoli i wszelkich procesów potomnych tworzonych od niego. Wszelkie skrypty Pythona uruchamiane z tej konsoli będą używać nowej wartości PYTHONPATH. Zamknij konsolę, a zmiana zostanie zapomniana.