PyJWT установлен, но выдает ошибку: ModuleNotFoundError: Нет модуля с именем 'jwt'

Мой проект Django работал нормально. Затем я выполнил шаги по внедрению Auth0 в мой проект, который я успешно настроил на своем фронтенде. Я выполнил все эти шаги: https://auth0.com/docs/quickstart/backend/django/01-authorization

Запуск в Python 3.9.6 ('.venv': Pipenv) ./.venv/bin/python Пробую установить требования во всех окружениях enter image description here

Я даже обновил файл requirements.txt до самых современных версий, чтобы проверить, не является ли это проблемой совместимости. Когда я запускаю python manage.py runserver, я получаю

  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/Users/chasesheaff/teachr-backend/teachr/urls.py", line 23, in <module>
    path('', include('auth0authorization.urls')),
  File "/Users/chasesheaff/Library/Python/3.9/lib/python/site-packages/django/urls/conf.py", line 38, in include
    urlconf_module = import_module(urlconf_module)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/Users/chasesheaff/teachr-backend/auth0authorization/urls.py", line 3, in <module>
    from . import views
  File "/Users/chasesheaff/teachr-backend/auth0authorization/views.py", line 5, in <module>
    import jwt
ModuleNotFoundError: No module named 'jwt'

pip freeze дает такой результат

asgiref==3.7.2
certifi==2024.7.4
cffi==1.17.0
chardet==3.0.4
charset-normalizer==3.3.2
cryptography==43.0.0
Django==4.2.15
django-cors-headers==4.4.0
djangorestframework==3.10.3
drf-jwt==1.19.2
future==0.18.2
idna==2.8
macholib==1.15.2
pycparser==2.22
PyJWT==2.9.0
requests==2.32.3
six==1.15.0
sqlparse==0.4.4
typing_extensions==4.8.0
urllib3==1.25.11```

have jwt in ```utils.py```
```from django.contrib.auth import authenticate
import json
import jwt
import requests

def jwt_get_username_from_payload_handler(payload):
    username = payload.get('sub').replace('|', '.')
    authenticate(remote_user=username)
    return username
... more code in file

и в views.py


# Create your views here.
from functools import wraps
import jwt

from django.http import JsonResponse

def get_token_auth_header(request):
    """Obtains the Access Token from the Authorization Header
    """
    auth = request.META.get("HTTP_AUTHORIZATION", None)
    parts = auth.split()
    token = parts[1]

    return token
... more code

Я фронтенд-инженер, пытающийся изучить бэкенд еще глубже. Поэтому я буду объяснять все через эту призму, чтобы помочь всем, кто оказался в подобной ситуации.

pip похож на npm requirements.txt похож на package.json Лучшее объяснение здесь: Является ли npm в Node подобием virtualenv в Django?

У меня установлен python 3.9, а также 3.11.5. Я запускал виртуальную среду с python manage.py runserver, в которой был установлен python 3.9, однако когда я использовал python3 manage.py runserver, в которой используется 3.11.5, все работало как ожидалось.

Дни кодирования потеряны, но много нового узнали о виртуальных средах. Эта тема помогла найти решение: https://discuss.python.org/t/python3-v3-x-vs-python-v3-x/29087

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