[英]Python: import module from another directory at the same level in project hierarchy
[英]How to import from project level package in Django without conflicting with app level module with same name?
我有一个具有以下结构的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
文件中,我有一个MyFilter
类。 但是,从polls/admin.py
中,当我尝试from utils.filters import MyFilter
运行时from utils.filters import MyFilter
ImportError: No module named filters
。 如何在不重命名polls/utils.py
模块或utils
包的情况下将我的自定义过滤器导入polls应用程序中?
注意:这不是循环导入问题。 即使我不从utils/filters.py
导入任何内容,也会发生这种情况。 这是utils/
和polls/utils.py
之间的名称冲突。 蟒蛇试图找到filters.MyFilter
内部polls/utils.py
并因此引发错误是没有找到它。 我只想找出一种绕过此冲突并强制python在项目根目录的utils/
包内查找filters.MyFilter
的方法。
在Python 2中, import utils
模棱两可,因为它可以是相对导入,也可以是绝对导入。
如果您通过将以下导入添加到模块顶部来启用Python 3行为,
from __future__ import absolute_import
然后from utils.filters import MyFilter
将被视为绝对导入并且可以正常工作。
添加了将来的导入后,如果要从polls/admin.py
导入polls/utils.py
,则需要使用一个显式相对导入import .utils
polls/admin.py
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.