importterror尝试相对导入超越顶级包



这是我的项目结构:

.
├── connectapp
│   ├── __init__.py
│   ├── __pycache__
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── djangoproject
│   ├── __init__.py
│   ├── __pycache__
│   ├── asgi.py
│   ├── djangoproject.sqlite3
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── djangoproject.sqlite3
├── hackerapp
│   ├── Controllers
│   ├── Models
│   ├── Serializers
│   ├── __init__.py
│   ├── __pycache__
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   └── tests.py
├── manage.py
└── requirments.txt

当我在顶层文件夹中执行以下操作时:

python3 manage.py migrate hackerapp

我得到这个:

djangoproject/djangoproject/urls.py", line 19, in <module>
from ..hackerapp.Controllers import PersonViewSet, DepartmentViewSet
ImportError: attempted relative import beyond top-level package

对我来说,看起来很重要,但事实并非如此,有人能告诉我为什么吗?

我猜(?)migrate hackerapp是manage.py脚本的cli参数。该错误表示顶层文件夹不是一个包。要使它成为一个包,添加一个(空的)__init__.py文件,然后从该文件夹中运行:

python -m manage migrate hackerapp # note no .py

最新更新