Python子进程我无法导入其他模块

时间:2017-10-04 09:42:51

标签: python subprocess

我正在尝试使用python子进程来执行脚本,这让我感兴趣能够导入我的项目。在另一个进程中运行时,我只有典型的模块,而不是我的项目进行导入时的模块。如何导入我的模块?

示例:

first_script.py

element.style.maxHeight = "84px";

second_script.py

import subprocess
from my_project.any_module import any_module

def __init__(self):
    subprocess.call(['python', 'path/to/exec/second_script.py'])

在第一个脚本中,导入any_module有效,在第二个脚本中没有。

有什么想法吗? THX。

1 个答案:

答案 0 :(得分:1)

my_project模块需要在你的PYTHONPATH中,所以Python可以找到它。 PYTHONPATH包含您当前的工作目录,这就是它运行时在您的第一个脚本中工作的原因。但是当你调用子进程时,cwd是不同的。因此,您需要将my_project的路径添加到PYTHONPATH,并使用env参数subprocess.call()明确指定PYTHONPATH。

但是,以这种方式运行Python代码很尴尬。除非你有特殊要求阻止这种情况,否则我建议使用multiprocessing包来代替在单独的进程中运行Python代码。