Путь поиска модуля Python - PullRequest
       12

Путь поиска модуля Python

3 голосов
/ 19 августа 2010

У меня есть такой проект:

foo/
| main.py
| bar/
| | module1.py
| | module2.py
| | __init__.py

с main.py выполнение import bar.module1 и module1.py выполнение import module2.

Это работает с использованием Python 2.6, но неpython 3.1 (ImportError: No module named module2)

Почему изменилось поведение?Как его восстановить?

1 Ответ

6 голосов
/ 19 августа 2010

В module1.py выполните: from . import module2

main.py

import bar.module1
print(bar.module1.module2.thing)

бар / INIT .py

#

бар / module1.py

#import module2 # fails in python31
from . import module2 # intrapackage reference, works in python26 and python31

бар / module2.py

thing = "blah"

Что касается того, почему / как, это выше моего paygrade. Документация, кажется, не объясняет это. Может быть, в Python 3 они решили применить субмодули в пакетах, явно импортируемых со стилем внутрипакетов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...