У меня есть файл кода Python 3, который я хочу запустить, используя свой код Python (2.7), поэтому я написал следующее:
# 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. Я загрузил код Mask_RCNN из здесь, и он без проблем работает автономно. Однако, когда я использую вышеупомянутый механизм для вызова внешнего вызова с другим PYTHONPATH, он ведет себя так, как будто он не распознает свои модули.
Кто-нибудь знает, почему именно это происходит?





Все заработало.
Проблема заключалась в том, что я не добавил папку проекта в 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 })