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
из своего домашнего каталога.