【发布时间】:2021-06-28 10:02:18
【问题描述】:
在探索 Django 时,我想到了这个问题。
假设这个结构:
.
├── db.sqlite3
├── manage.py
├── mysite
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── myapp
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
在myapp/urls.py中,这条语句导入视图很好:
from . import views
而只是 import views 引发 ModuleNotFoundError。
我的理解是import foo 在sys.path 定义的目录列表中搜索 foo,其中包括当前包,也包括documentation:
相对导入使用前导点。单个前导点表示 相对导入,从当前包开始。
所以,import foo 和 from . foo 应该完全一样。如果这是真的,为什么 django 进口不是这种情况?如果不是真的,我误会了什么?
【问题讨论】: