Django ViewSet ModuleNotFoundError: Нет модуля с именем 'имя проекта' - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь использовать ModelViewSet для отображения пользователей, но по какой-то причине Django, похоже, не нравится импорт UserViewSet в project / urls.py. Похоже на довольно глупую ошибку, но я застрял на этом некоторое время, и это расстраивает. Насколько я знаю, у меня нет ошибок в коде, и импорт полностью функционален. Я что-то упустил?

Django версия 2.2.13

project / urls.py

from django_backend.user_profile.views import UserViewSet

router = routers.DefaultRouter()
router.register('user', UserViewSet)

urlpatterns = [
    path('accounts/', include(router.urls)),
]

userprofile / views .py

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()#.order_by('-date_joined')
    serializer_class = UserSerializer

Ошибка

from django_backend.user_profile.views import UserViewSet
ModuleNotFoundError: No module named 'django_backend'

Структура проекта

enter image description here

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Из комментариев мы выяснили, что прямой ответ на ваш вопрос таков: вы импортируете django_backend, который является root вашего проекта, но не является формальным Python пакетом. , который существует в sys.path и поэтому не может быть импортирован как таковой.

Поскольку Django устанавливает sys.path в каталог root вашего проекта, вы захотите импортировать user_profile.views без django_backend part:

from user_profile.views import UserViewSet

Как только вы это сделаете, вы можете подумать о настройке PyCharm, чтобы знать, что папка django_backend - это ваши источники Root. Это сообщит PyCharm, где искать код Python, чтобы он не отображал ошибку при попытке импортировать модули из вашего каталога Django.

1 голос
/ 16 июня 2020

Интерпретатор python ищет модули в каталогах, перечисленных в sys.path. Вы c должны быстро распечатать sys.path, чтобы проверить, есть ли в списке 'reactjs -comeon'.

В зависимости от того, как вы запускали файл, он может не быть включен. Например, если вы запустили project> python urls.py, этого не будет. Вы можете вручную добавить каталог в sys.path в качестве быстрого решения.

Однако в целом я бы рекомендовал вам ознакомиться с относительным / абсолютным импортом и упаковкой на https://docs.python.org/3/reference/import.html

...