在执行Python脚本之前,如何临时设置PYTHONPATH环境variables?
在* nix中,我可以这样做:
$ 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脚本,你可以省略cal中的第二个python,并把sys.argv[i-1]
'python'在代码中,然后使用sys.argv[i-1:]
作为subprocess.call的参数)。
如何暂时? 如果您打开Windows控制台(cmd.exe),请键入:
set PYTHONPATH=.
将仅改变该控制台的PYTHONPATH以及由其创建的任何子进程。 从这个控制台运行的任何python脚本将使用新的PYTHONPATH值。 关闭控制台,更改将被遗忘。
在Windows中,可以将PYTHONPATH设置为具有GUI前端的环境变量。 在大多数Windows版本上,可以通过右键单击我的电脑启动,然后右键单击属性。
您在Windows上使用SET
:
SET PYTHONPATH=. python scripts/doit.py