我有一个要使用我的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
的外部调用时,它的行为就像无法识别其模块一样。
有人知道为什么会这样吗?
答案 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 })