如何导入已经被导入的同名python模块?

8

我在使用Python模块时遇到了问题。 我安装了Django(也可以是其他任何模块)。我正在使用这个模块:

from django.template import Context
# other imports
# use Context

我在我的应用程序中有一个名为“utilities”的文件夹。在这个文件夹中,我创建了一个名为“django.py”的文件,其中包含一些与Django相关的函数。

所以我在我的模块中导入Django,但是我遇到了错误:

文件"...\utilities\django.py",第1行, from django.template import Context ImportError: 没有名为template的模块


4
你真的不应该用那种方式命名文件。 - Wang Dingwei
2个回答

12

你需要在文件的顶部启用绝对导入

from __future__ import absolute_import

然后,您需要将模块中的导入转换为相应的绝对或相对导入。


向前兼容,喜欢它。 - Jakob Bowyer
@user607854:不要忘记接受你认为正确的答案。 - Ignacio Vazquez-Abrams

1
使用命名空间,在您的实用程序目录中创建一个__init__.py,使其成为包,然后执行import utilities.django。顺便说一句,将模块命名为与标准库或您知道要使用的软件包名称相同是不好的做法。您永远不知道何时会混淆自己要使用哪个模块。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接