Subprocess.check_call:没有名为X的模块

时间:2018-12-19 12:22:35

标签: python-2.7 subprocess python-module

我有一个要使用我的Python代码(2.7)运行的Python 3代码文件,因此我写了以下内容:

# run the  code using a different python environment
python3 = '/usr/bin/python3'
execution_dir = '/path/to/the/dir/'
command = [python3, execution_dir + "mycode.py", "-i" + "/tmp/image.png"]
subprocess.check_call(command, env={'PYTHONPATH': '/usr/local/lib/python3.6/dist-packages'})

结果是它无法识别Python 3代码中引用的模块,并抛出ModuleNotFoundError: No module named 'mrcnn'

我认为这与Python的模块/包范例有关。我从here下载了Mask_RCNN代码,它可以独立运行而没有问题。但是,当我使用上述机制来调用具有不同PYTHONPATH的外部调用时,它的行为就像无法识别其模块一样。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

使其正常工作。

问题是我没有将项目文件夹添加到PYTHONPATH。

# run the detection code using a different python environment
python3 = '/usr/bin/python3'
execution_dir = home + '/path/to/executable'
pythonpath = home + '/path/to/project/folder' 
command = [python3, execution_dir + "mycode.py", "-i " + "/path/to/image"]
subprocess.check_call(command, env={'PYTHONPATH': pythonpath })