我正在尝试从 parent.py 运行 Python 脚本 child.py,但是 child.py 导入不在同一目录中的模块。所以 child.py 首先使用
sys.path.append()
设置路径。
我想从
parent.py
设置路径,然后从我的脚本运行 child.py
。原因是模块所在目录的名称随着版本更新而不断变化。我正在尝试从 sys.path.append()
运行 parent.py
,但它没有反映在 child.py
中。
我该如何解决这个问题?
import sys
sys.path.append("/path/to/directory-v2")
proc = subprocess.popen(["python3", "child.py"], stdout=subprocess.PIPE)
...
import sys
sys.path.append("/path/to/directory-v1")
import module1, module2
...
subprocess.Popen
和subprocess.run
方法接受覆盖子进程的环境变量的env
参数。您可以使用它将其他路径附加到 PYTHONPATH
环境变量,如下所示:
import os
import subprocess
additional_path = "/path/to/directory-v2"
# Append to the current PYTHONPATH if it exists
python_path = os.pathsep.join([os.environ.get("PYTHONPATH", ""), additional_path])
# Use a copy of the current environment so you are not affecting the parent
curr_env = os.environ.copy()
modified_env = curr_env | {"PYTHONPATH": python_path}
proc = subprocess.Popen(["python3", "child.py"], stdout=subprocess.PIPE, env=modified_env)