2010-05-25 15 views
5

Python komut dosyasını çalıştırmadan hemen önce PYTHONPATH ortam değişkenini geçici olarak nasıl ayarlayabilirim?Windows'da Geçici PYTHONPATH

* nix, ben bunu yapabilirsiniz: Windows'da bu sözdizimi elbette çalışmıyor

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

. Yine de eşdeğer nedir?

cevap

8

kurmak ve bir maalesef "biraz işkence" bir yaklaşım gerektirir Windows' komut satırında bir ortam değişkeni geri yüklemek için ...:

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

Yapabilirsin daha az ağrılı hale getirmek için küçük bir yardımcı Python betiği kullanın

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

olarak çağrılacak o için herhangi alt işlemi, sadece bir Python komut çalışır böylece örneğin

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

(bunu kodlu ettik - Yalnızca Python komut dosyaları hakkında bakım İkinci python'u cal içinde çıkararak 'python'u sys.argv[i-1] koduna koyabilirsiniz, ardından subprocess.call argümanı olarak sys.argv[i-1:] kullanın.

+0

Hm. İhtiyacım olandan biraz daha fazla, ama teşekkürler! Bunu yarın deneyeceğim. – Santa

1

Windows'ta, PYTHONPATH öğesini bir GUI ön ucu olan bir ortam değişkeni olarak ayarlayabilirsiniz. Windows'un birçok sürümünde, Bilgisayarım'a sağ tıklayıp Özellikler'i sağ tıklatarak başlatabilirsiniz.

1

Sen Windows üzerinde SET kullanın:

SET PYTHONPATH=. 
python scripts/doit.py 
6

Geçici olarak nasıl? Bir Windows konsol (cmd.exe), yazarak açarsanız:

set PYTHONPATH=. 

sadece o konsoldan ve ondan oluşturulan herhangi Çocuk süreçler için PYTHONPATH değişecektir. Bu konsoldan çalıştırılan herhangi bir python betiği yeni PYTHONPATH değerini kullanacaktır. Konsolu kapatın ve değişiklik unutulacak.