我正试图从同级包中导入模型并得到
ValueError: attempted relative import beyond top-level package
奇怪的是,我是根据PyCharm建议自动填充的,所以IDE正在注册模块,但是我的构建失败了。
] 1
这是我的项目结构:
app
\
+-core
| \
| +- __init__.py
| +- models.py <- the Tag model is present here
|
+-scheduler
| \
| +- __init__.py
| +- serializers.py <- importing app.core.models.Tag in this file
|
+- __init__.py
app.scheduler.serializers.py:
from rest_framework import serializers
from ..core.models import Tag
class TagSerializer(serializers.ModelSerializer):
"""Serializer for tag objects"""
class Meta:
model = Tag
fields = ('id', 'name')
read_only_fields = ('id',)
我一直在为此挠头,似乎无法弄清楚……
我尝试使用绝对路径,甚至使用PyCharm导入实用程序将其添加:
from rest_framework import serializers
from app.core.models import Tag
class TagSerializer(serializers.ModelSerializer):
"""Serializer for tag objects"""
class Meta:
model = Tag
fields = ('id', 'name')
read_only_fields = ('id',)
但是我得到:
ModuleNotFoundError: No module named 'app.core'
我正在使用
python manage.py runserver
答案 0 :(得分:1)
真正的答案是顶级应用程序文件夹未包含在python路径中,我提到了this堆栈溢出答案,内容如下:
... python不会记录软件包从何处加载。因此,当您执行python -m test_A.test时,它基本上只是舍弃了test_A.test实际上存储在程序包中的知识...
并建议使用from core.models import Tag
,它似乎可以正常工作。