Почему ModuleNotFound при импорте модуля в тот же каталог? - PullRequest
1 голос
/ 28 января 2020

Вопрос

Когда я пытаюсь активировать main.py на linux bash с помощью следующей команды,

python3 main.py

Появляется сообщение об ошибке, выглядящее так, как показано ниже, и Я не могу понять, почему !!

File "main.py", line 1, in <module>
    import folder_beta.util_one
File "folder_beta/util_one.py", line 1, in <module>
    ModuleNotFoundError: No module named 'util_two'

Более подробные вопросы

Дерево папок выглядит следующим образом:

folder_alpha
├── main.py
└── folder_beta
      ├── __init__.py (empty)
      ├── util_one.py
      └── util_two.py

main.py

import folder_beta.util_one
import folder_beta.util_two
....

util_one.py

import util_two
...

Когда я выполнил только 'util_one.py', он прекрасно работает, но когда я выполнил main.py, ошибка продолжает появляться .

Может кто-нибудь сказать мне, как решить эту проблему, пожалуйста?

1 Ответ

2 голосов
/ 28 января 2020

Это неявный относительный импорт , он работал бы в Python 2, но больше не разрешен в Python 3. С PEP 8 :

Неявный относительный импорт никогда не должен использоваться и был удален в Python 3.

В util_one.py модуле, измените его на:

from folder_beta import util_two
...