Windows中的临时PYTHONPATH
我怎么在执行一个Python脚本之前,临时设置PYTHONPATH这个环境变量呢?
在*nix系统中,我可以这样做:
$ PYTHONPATH='.' python scripts/doit.py
在Windows系统中,这种写法当然不行。那么,Windows里该怎么做呢?
5 个回答
1
在Windows系统中,你可以把PYTHONPATH设置为一个环境变量,这样可以通过图形界面来操作。在大多数Windows版本中,你可以通过右键点击“我的电脑”,然后再右键点击“属性”来打开这个设置。
10
怎么暂时改变呢?如果你打开一个Windows命令行窗口(cmd.exe),输入:
set PYTHONPATH=.
这只会改变这个命令行窗口的PYTHONPATH,以及从这个窗口启动的任何子进程。也就是说,从这个窗口运行的任何Python脚本都会使用新的PYTHONPATH值。关闭这个窗口后,这个改变就会消失。
9
在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的调用,把'python'放在sys.argv[i-1]
里,然后用sys.argv[i-1:]
作为subprocess.call的参数。)