Не понимаю причину этого ModuleNotFoundError - PullRequest
0 голосов
/ 12 января 2019

У меня есть файловая структура:

└── project    
    ├── __init__.py
    ├── main.py
    └── package1
        ├── __init__.py
        ├── module1 
        └── subpackage
            ├── __init__.py
            └── module2.py

module2 содержит функцию с именем A, а модуль 1 импортирует module2 с кодом:

from subpackage import module2

это работает нормально при непосредственном запуске module1, но когда я пытаюсь импортировать module1 из main.py, я получаю сообщение об ошибке. Код для оператора импорта в main.py:

from package1 import module1

это дает ошибку

  Traceback (most recent call last):
  File "C:\...\project\main.py", line 1, in <module>
    from package1 import module1
  File "C:\...\project\package1\module1.py", line 1, in <module>
    from subpackage import module2
ModuleNotFoundError: No module named 'subpackage'

Я не совсем понимаю, что здесь происходит, я попытался изменить текущий рабочий каталог с помощью os.chdir () на package2 в module1, но это не дало никакого эффекта. После изучения проблемы единственное, что я мог найти, что могло иметь отношение к моей проблеме, было абсолютное отношение к относительному импорту, но изменение операторов импорта не повлияло на ошибку.

1 Ответ

0 голосов
/ 12 января 2019

В вашем файле module1.py необходимо указать полный путь (абсолютный) для импортируемого файла. Поэтому, если вы хотите запустить свой код из файла main.py, вам нужно изменить импорт в module1.py на:

from package2.subpackage import module2

или

import package2.subpackage.module2
...