Как решить ModuleNotFoundError? - PullRequest
       20

Как решить ModuleNotFoundError?

0 голосов
/ 31 января 2020

Я хочу импортировать ab c .py в main.py и ab c .py сам импорт xyz.py и pqr.py . Ниже приведена структура моего проекта:

main_folder
    |
    +--main.py
    |
    +--inside_folder
        |
        +--sub_folder
            |
            +--abc.py
            |
            +--xyz.py
            |
            +--subsub_folder
                |
                +--pqr.py

Для этого: я написал следующие строки в main.py : from inside_folder.sub_folder import abc И ab c .py содержит

from inside_folder.sub_folder.subsub_folder import pqr 
from inside_folder.sub_Folder import xyz

Я также попытался импортировать без части inside_folder.sub_folder из файла ab c .py , однако при этом он сообщает ModuleNotFoundError.

Пожалуйста, помогите мне решить эту проблему.

Примечание. Я добавил init .py во все папки. Тем не менее ошибка не может быть решена.

Ответы [ 2 ]

1 голос
/ 31 января 2020

Если вы используете python2, вы не найдете никаких проблем с вышеуказанной структурой папок, если каждая папка имеет файл __init__.py с кодом ниже main.py

from inside_folder.sub_folder import abc

ab c .py

from subsub_folder import pqr 
import xyz

, но если вы используете python 3, вам нужно изменить abc.py на

from .subsub_folder import pqr 
from . import xyz
1 голос
/ 31 января 2020
  • ваши пакеты (папки, действующие как единое пространство имен python), вероятно, должны иметь файл __init__.py, чтобы объявить их как пакеты, хотя IIR C в некоторых случаях больше не требуется проще просто сделать это
  • from inside_folder.sub_folder import abc совершенно неверно, после PEP 328 это говорит Python искать верхний уровень inside_folder. Вам нужно использовать относительный импорт здесь, чтобы Python искал родного брата для импортируемого файла, известного как from .inside_folder.sub_folder
  • , хотя это предполагает, что вы полностью вне дерево, которое вы нам показываете и выполняете from main_folder import main.py или запускаете python -mmain_package.main, PYTHONPATH будет настроено иначе:
  • структура, которую вы показываете, не соответствует вашему импорту, abc.py - рядом с sub_folder, а не внутри
...