2013-08-07 4 views
0

Недавно я портировал приложение django из Python 2.7 в Python 3.3 с Django1.6b1.Операция импорта не работает с Python 3.3

Мои операторы импорта больше не будут работать для импорта пользовательских модулей (User, views ...), и мне пришлось добавить точку перед этими импортами. Зачем ?

Пример:

import EmailUser #worked with python 2.7 but doesn't work with 3.3  
import .EmailUser #works  

ответ

3

не ошибка; Python 3 заставляет явно относительный импорт.

От docs:

Единственный приемлемый синтаксис для относительного импорта является from .[module] import name. Все формы импорта, не начинающиеся с ., толкуются как абсолютный импорт . (PEP 0328)

+0

Спасибо за объяснение. Помог мне много. – Depado

3

Это из-за «абсолютного импорта», то есть импорта, с которого не начинается. являются абсолютными и должны быть найдены в пути модуля. В Python 2.6, 2.7 вы можете повернуть это в файл за файлом, выполнив

+0

Спасибо: D Я не знал. – Depado

Смежные вопросы