Как исправить ошибку ModuleNotFoundError: Нет модуля с именем 'rest_framework' в Ubuntu

Я впервые пытаюсь развернуть приложение django на AWS EC2. Я использую сервер Ubuntu, но случилось так, что пакеты, которые я установил, не распознаются, пакеты уже добавлены в INSTALLED_APPS. Ошибка, которую я получаю:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/home/ubuntu/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
    django.setup()
  File "/home/ubuntu/.local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/django/apps/config.py", line 224, in create
    import_module(entry)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'rest_framework'

Ошибка ссылается на любой пакет, который идет первым в списке INSTALLED APPS. В данном случае первым идет restframework. Если первым в установленных приложениях идет corshearder, то ошибка будет ModuleNotFoundError: No module named 'corsheaders и так далее. Я знаю, что такое поведение происходит потому, что код интерпретируется сверху вниз в файле settings.py. Я установил эти пакеты, используя sudo pip install -r requirements.txt. Когда проблема продолжала возникать, я переустановил пакеты с помощью sudo pip3 install packge_name. Я активировал виртуальную среду перед запуском установок, но ни один из пакетов не был найден. Я не знаю точно, пропустил ли я какие-либо шаги, потому что я очень мало знаю о командах linux. Как мне правильно установить пакеты в переменную envirpment?

Ошибка произошла потому, что вы установили свои зависимости с помощью Sudo. Это установило ваши зависимости pip только для пользователей Sudo, в то время как вы запускаете ваше приложение Django как пользователь без Sudo. Это причина, по которой вы не увидели свои пакеты, когда делали pip freeze, но увидели их после выполнения sudo pip3 freeze

Для решения этой

задачи
  1. Установите python3-venv этой командой sudo apt-get install python3-venv
  2. .
  3. Создайте виртуальную среду python3 -m venv env эта команда создаст виртуальную среду с именем env
  4. .
  5. Активируйте виртуальную среду с помощью этой команды source env/bin/activate

После этого вы увидите (env) перед вашей оболочкой, что указывает на то, что ваша виртуальная среда активирована, теперь нужно установить зависимости внутри этой

  1. cd в ваш файл requirements.txt и введите pip3 install -r requirements.txt убедитесь, что вы делаете это без sudo (потому что вы будете запускать ваше приложение Django на вашем веб-сервере как пользователь без привилегий sudo по соображениям безопасности)

После этого вы можете запустить ваше приложение Django с сохранением активной виртуальной среды.

Вернуться на верх