Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 22, 2014 23:05:18

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Импорт относительно пакета

Привет,
два файла находятся в одной папке game. Пробую сделать импорт относительно пакета, но ничего не получается:

win7, python 3.4

папка Modules - находится в PYTHONPATH

Modules/
game/
__init__.py
best_score.py
zzz.py

В zzz.py находится следующая инструкция:

from . import best_score
print(best_score.best_score)
input()

В итоге получаем ошибку:
SystemError: Parent module '' not loaded, cannot perform relative import.

Где я ошибся?

Отредактировано WoMax (Авг. 22, 2014 23:05:52)

Офлайн

#2 Авг. 22, 2014 23:37:48

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Импорт относительно пакета

А нельзя просто import best_score?

Офлайн

#3 Авг. 22, 2014 23:47:30

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Импорт относительно пакета

Можно и это своидит меня с ума
По Лутцу в python3 импорт по умолчанию должен производистя по абсолютному пути, а для импорта по относительному пути необходимо использовать синтаксис from . import

На практике получается все наоборот, обычный импорт в папке games (которой нету в пути поиска PYTHONPATH) работает, то есть по умолчанию производится импорт по относительному пути.
А при явной инструкции from . import best_score выдает ошибку.

Собственно интересно почему это происходит.

Офлайн

#4 Авг. 23, 2014 00:18:15

WoMax
Зарегистрирован: 2014-05-26
Сообщения: 124
Репутация: +  9  -
Профиль   Отправить e-mail  

Импорт относительно пакета

Нашел ответ здесь: stackoverflow.com/questions/16637428/relative-import-in-python-3-not-working

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version