![](/img/trans.png)
[英]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.