gpt4 book ai didi

python - 如何从 Django 中的项目级包导入而不与同名的应用程序级模块冲突?

转载 作者:行者123 更新时间:2023-12-01 01:38:17 27 4
gpt4 key购买 nike

我有一个具有以下结构的 Django 项目(Python 2.7.15):

mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
utils.py
utils/
__init__.py
filters.py

在我的 utils/filters.py 文件中,我有一个类 MyFilter。然而,从 polls/admin.py 中,当我尝试运行 from utils.filters import MyFilter 时,我得到 ImportError: No module namedfilters 。如何在不重命名 polls/utils.py 模块或 utils 包的情况下将自定义过滤器导入到民意调查应用程序中?

注意:这不是循环导入问题。即使我没有从 utils/filters.py 导入任何内容,也会发生这种情况。这是 utils/polls/utils.py 之间的名称冲突。 Python 尝试在 polls/utils.py 中查找 filters.MyFilter,但没有找到,因此抛出错误。我只是想找到一种方法来绕过此冲突并强制 python 在项目根目录的 utils/ 包内查找 filters.MyFilter

最佳答案

在 Python 2 中,import utils 是不明确的,因为它可以是相对导入或绝对导入。

如果您通过将以下导入添加到模块顶部来启用 Python 3 行为,

from __future__ import absolute_import

然后 from utils.filters import MyFilter 将被视为绝对导入并且可以工作。

添加 future 导入后,如果您想从 导入 polls/utils.py,则需要使用显式相对导入 import .utils >polls/admin.py.

关于python - 如何从 Django 中的项目级包导入而不与同名的应用程序级模块冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52168700/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com