Python:如何强制使用非相对路径导入?

14

我想在我的项目中创建一个名为utils/django.py的模块。在文件的开头,我添加了以下代码:

from django.db import models

然而,它尝试从自身导入,这会导致错误。我知道我可以通过在前面加上.来强制进行相对导入:

from .django.db import models

有没有办法强制进行非相对导入?


你也可以重命名文件。相对导入强烈不建议,你应该使用import myapp.stuff.django这样的方式。 - Jochen Ritzel
听起来你正在尝试从定义它的文件中导入一个类。如果是这种情况,那么你可以直接引用类db.models而不需要导入它。 - user35147863
@JochenRitzel,你打算如何解决这个问题?在模块名称后面添加一个数字?还是下划线?有时候同样的名称是唯一合理的名称,而你提出的方案甚至没有尝试解决这个问题... - El Ninja Trepador
值得注意的是,不鼓励相对导入本身,而是不带前导点“.”的_隐式_导入对人类不利。出于这个原因,Python 3不允许隐式相对导入。 - Tim
1个回答

21

不行。您需要显式启用绝对引入

from __future__ import absolute_import

4
这是Python2中应该使用的方式。在Python3中,默认使用绝对导入。 - Jochen Ritzel

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