Subprocess.check_call: нет модуля с именем X - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть файл кода 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, он ведет себя так, будто не распознает свои модули.

Кто-нибудь знает, почему именно это происходит?

1 Ответ

0 голосов
/ 20 декабря 2018

Работает.

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