Windows中的临时PYTHONPATH

6 投票
5 回答
8240 浏览
提问于 2025-04-15 23:06

我怎么在执行一个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的参数。)

撰写回答