Python 3: модуль в том же каталоге, что и script: "ImportError: нет модуля с именем"

Я пытаюсь импортировать модуль (venues) из оболочки IPython. Модуль venues правильно импортирован, но затем пытается самостоятельно импортировать модуль с именем makesoup и не может этого сделать.

Я располагаюсь в каталоге ~ и пытаюсь импортировать файл venues.py, расположенный в подкаталоге processors. Файл makesoup.py также находится в подкаталоге processors, что означает, что любой Python script рядом с ним должен иметь возможность его найти, правильно?

In [1]: import processors.venues
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-765135ed9288> in <module>()
----> 1 import processors.venues

~/processors/venues.py in <module>()
      7 """
      8 
----> 9 import makesoup
     10 import re
     11 

ImportError: No module named 'makesoup'

Я добавил пустой __init__.py в оба каталога ~ и processors, но безуспешно.

Примечание: модуль makesoup корректно импортируется, когда я находится в processors, но я знаю, что это не единственный способ его работы.

Ответ 1

Файл makesoup.py также находится в подкаталоге processors, что означает, что любой Python script рядом с ним должен его найти, правильно?

Нет. Эта функция была изменена в Python 3 и этот синтаксис больше не работает.

Измените import makesoup на следующее:

from . import makesoup

Или для этого:

from processors import makesoup

Оба из них сделают невозможным выполнение python processors/venues.py напрямую, хотя вы все равно можете сделать python -m processors.venues из своего домашнего каталога.