使用Python 3.3,Import语句无法正常工作

时间:2013-08-07 16:33:49

标签: python python-2.7 python-3.x python-import

我最近使用Django1.6b1将Python 2.7中的django应用程序移植到Python 3.3。

我的导入语句不再适用于自定义模块导入(用户,视图...),我必须在这些导入之前添加一个点。为什么?

示例:

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

2 个答案:

答案 0 :(得分:3)

不是错误; Python 3强制显式相对导入。

来自docs

  

相对导入的唯一可接受的语法是from .[module] import name。不以.开头的所有导入表单都被解释为   绝对进口。 (PEP 0328

此外,import .EmailUser在任何Python版本中都是无效的语法;它必须是from . import EmailUser

答案 1 :(得分:3)

这是因为“绝对进口”,也就是不开始的进口。是绝对的,必须在模块路径中找到。在Python 2.6,2.7中,您可以通过执行

逐个文件地进行此操作
from __future__ import absolute_import