我正在尝试使用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。
答案 0 :(得分:1)
my_project
模块需要在你的PYTHONPATH中,所以Python可以找到它。 PYTHONPATH包含您当前的工作目录,这就是它运行时在您的第一个脚本中工作的原因。但是当你调用子进程时,cwd是不同的。因此,您需要将my_project
的路径添加到PYTHONPATH,并使用env
参数subprocess.call()
明确指定PYTHONPATH。
但是,以这种方式运行Python代码很尴尬。除非你有特殊要求阻止这种情况,否则我建议使用multiprocessing包来代替在单独的进程中运行Python代码。