ModuleNotFoundError: нет модуля с именем «rest_framework». Как я могу исправить эту ошибку?

Я новичок в Джанго. Я использую Ubuntu, Apache и virtualenv. Я использую Ubuntu на DigitalOcean. Я пытаюсь использовать Django и React вместе. Итак, я скачал djangorestframework. Но когда я запускаю сервер, я столкнулся с этой проблемой.

(new_app) sot232@ubuntu:/var/www/html/django_app/commercial$ python3 manage.py runserver
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/utils/autoreload.py", line 77, in raise_last_exception
    raise _exception[0](_exception[1]).with_traceback(_exception[2])
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/home/sot232/new_app/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
    module = import_module(entry)
  File "/home/sot232/new_app/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'rest_framework'

Я правильно включил rest_framework в файл settings.py.

INSTALLED_APPS = [
    'rest_framework',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'commercial',
]

Я пробовал эти команды.

sudo pip3 install djangorestframework
sudo pip install djangorestframework
sudo pip install django-rest-swagger
sudo apt-get install python3-setuptools

Я также пытался установить djangorestframework после sudo su.

(Я пробовал и другие предложения. Но я не могу их вспомнить.)

Кроме того, вот что я получил на оболочке python.

Python 3.7.3 (default, Apr  3 2019, 05:39:12) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import rest_framework
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'rest_framework'
>>> 

Вот дистрибутивы на случай, если вам это понадобится.

(new_app) sot232@ubuntu:/usr/local/lib/python3.7/dist-packages$ ls
Django-2.2.1.dist-info               pytz-2019.1.dist-info
__pycache__                          rest_framework
corsheaders                          sqlparse
django                               sqlparse-0.3.0.dist-info
django_cors_headers-3.0.0.dist-info  virtualenv-16.5.0.dist-info
djangorestframework-3.9.4.dist-info  virtualenv.py
pytz                                 virtualenv_support

Как я могу решить мою проблему?

Любая помощь будет оценена. Я видел другие сообщения на StackOverFlow, которые кажутся похожими на мои, но, похоже, ничто не решило мою проблему.

(Редактировать 1)

Пока env активирован, я попытался запустить pip install djangorestframework и получил это сообщение об ошибке.

(new_app) sot232@ubuntu:~/new_app/bin$ pip install djangorestframework
Collecting djangorestframework
  Using cached https://files.pythonhosted.org/packages/1b/fe/fcebec2a98fbd1548da1c12ce8d7f634a02a9cce350833fa227a625ec624/djangorestframework-3.9.4-py2.py3-none-any.whl
Installing collected packages: djangorestframework
ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/home/sot232/new_app/lib/python3.7/site-packages/djangorestframework-3.9.4.dist-info'
Consider using the `--user` option or check the permissions.

(Редактировать 2)

Я бегу pip freeze и pip3 freeze. Я получил этот результат.

sot232@ubuntu:~/new_app/bin$ source activate
(new_app) sot232@ubuntu:~/new_app/bin$ pip freeze
Django==2.2.1
mysqlclient==1.4.2.post1
pytz==2019.1
sqlparse==0.3.0

Похоже, что rest_framework не установлен на моем virtualenv. Однако djangorestframework==3.9.4 устанавливается глобально.

Вы находитесь в правильном virtualenv?

A. J. Parr 16.05.2019 02:02

Я совершенно уверен, что нахожусь в правильном virtualenv.

Jeong Kim 16.05.2019 23:35

Вы использовали sudo, когда создавали виртуальную среду? Похоже, вы основываетесь на других комментариях, и если вы хотите установить rest_framework, вам нужно либо использовать sudo при его установке, либо, что предпочтительнее, удалить virtualenv и воссоздать его без использования пользователя root.

A. J. Parr 17.05.2019 03:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
6 816
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Мне кажется, что вы пытаетесь запустить это с виртуальной средой под названием new_app, активированной, в то время как Django REST Framework установлен глобально.

У вас есть способы решить эту проблему:

  1. Запустите pip install djangorestframework (и любые другие, которые вам нужны или нужны) с активной средой new_app. Обратите внимание, что здесь нет sudo

  2. Запустите свой сервер разработки без активной виртуальной среды.

Конечно, номер один является предпочтительным способом. Удачи!

Я попытался запустить «pip install djangorestframework». Выдает ошибку, что у меня нет разрешения. Должен ли я изменить разрешение пользователя?

Jeong Kim 16.05.2019 23:37

Вы можете запустить pip freeze, чтобы подтвердить, какие библиотеки вы установили в свою виртуальную среду.
Иногда библиотека не была установлена ​​должным образом, и она будет отсутствовать в этом списке.

Скопируйте rest_framework в главный каталог проекта или установите его.

Я не уверен, что вы имели в виду.

Jeong Kim 16.05.2019 23:52
Ответ принят как подходящий

Все, что я пробовал, не удалось. Я просто создал еще один virtualenv и все переустановил. Теперь он работает как шарм.

У меня была эта проблема. И я запустил python -m pip install --upgrade pip для меня было работает.

Я получал ошибку даже после установки rest_framework. Наконец, это решение сработало для меня.

  1. Открыть проект в PyCharm IDE
  2. Создать сериализаторы.py
  3. Введите эту строку - из сериализаторов импорта rest_framework
  4. Наведите указатель мыши на волнистую линию, и PyCharm предложит вам установить rest_framework.

Это помогло мне

pip3 install djangorestframework
pip install djangorestframework
pip install djangorestframework-jwt

Другие вопросы по теме