如何修改子进程的Python路径

问题描述 投票:0回答:1

我正在尝试从 parent.py 运行 Python 脚本 child.py,但是 child.py 导入不在同一目录中的模块。所以 child.py 首先使用

sys.path.append()
设置路径。

我想从

parent.py
设置路径,然后从我的脚本运行
child.py
。原因是模块所在目录的名称随着版本更新而不断变化。我正在尝试从
sys.path.append()
运行
parent.py
,但它没有反映在
child.py
中。

我该如何解决这个问题?

父.py

import sys

sys.path.append("/path/to/directory-v2")
proc = subprocess.popen(["python3", "child.py"], stdout=subprocess.PIPE)
...

child.py

import sys

sys.path.append("/path/to/directory-v1")
import module1, module2
...
python subprocess
1个回答
0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.