暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Django:连接MySQL遇到错误「RuntimeError: 'cryptography'」

Nephilim 2024-05-11
56

Tips:一些记录,一些笔记



2024/05/11

SATURDAY

胖猫说「我不要吃菜,我要吃麦当劳」

而在世界的另一端,人类失去了一位「数学与量化交易」大师「詹姆斯·西蒙斯」,他是百年来,唯一一个被誉为「征服市场的人」




01

错误详情


该错误发生在Django连接MySQL数据库的时候,它的错误详情如下所示:

    /Users/adamhuan/PycharmProjects/django_daily_media/venv/bin/python Users/adamhuan/PycharmProjects/django_daily_media/manage.py runserver 8000
    Watching for file changes with StatReloader
    Performing system checks...


    System check identified no issues (0 silenced).
    Exception in thread django-main-thread:
    Traceback (most recent call last):
    File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/threading.py", line 1009, in _bootstrap_inner
    self.run()
    File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/threading.py", line 946, in run
    self._target(*self._args, **self._kwargs)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/utils/autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/core/management/commands/runserver.py", line 136, in inner_run
    self.check_migrations()
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/core/management/base.py", line 581, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/migrations/loader.py", line 58, in __init__
    self.build_graph()
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/migrations/loader.py", line 235, in build_graph
    self.applied_migrations = recorder.applied_migrations()
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/migrations/recorder.py", line 89, in applied_migrations
    if self.has_table():
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/migrations/recorder.py", line 63, in has_table
    with self.connection.cursor() as cursor:
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 316, in cursor
    return self._cursor()
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 292, in _cursor
    self.ensure_connection()
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 275, in ensure_connection
    self.connect()
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/backends/base/base.py", line 256, in connect
    self.connection = self.get_new_connection(conn_params)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/utils/asyncio.py", line 26, in inner
    return func(*args, **kwargs)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py", line 256, in get_new_connection
    connection = Database.connect(**conn_params)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/pymysql/connections.py", line 358, in __init__
    self.connect()
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/pymysql/connections.py", line 664, in connect
    self._request_authentication()
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/pymysql/connections.py", line 976, in _request_authentication
    auth_packet = _auth.caching_sha2_password_auth(self, auth_packet)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/pymysql/_auth.py", line 266, in caching_sha2_password_auth
    data = sha2_rsa_encrypt(conn.password, conn.salt, conn.server_public_key)
    File "/Users/adamhuan/PycharmProjects/django_daily_media/venv/lib/python3.10/site-packages/pymysql/_auth.py", line 143, in sha2_rsa_encrypt
    raise RuntimeError(
    RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods


    复制


    02

    解决方法


    安装软件包:「cryptography

      (venv) (base) adamhuan@Leviathan django_daily_media % 
      (venv) (base) adamhuan@Leviathan django_daily_media % pip list
      Package Version
      ------------------- -------
      asgiref 3.8.1
      Django 5.0.6
      djangorestframework 3.15.1
      pip 24.0
      PyMySQL 1.1.0
      setuptools 69.2.0
      sqlparse 0.5.0
      typing_extensions 4.11.0
      wheel 0.43.0
      (venv) (base) adamhuan@Leviathan django_daily_media %
      (venv) (base) adamhuan@Leviathan django_daily_media % pip install cryptography
      Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
      Collecting cryptography
      Downloading https://mirrors.aliyun.com/pypi/packages/cf/c2/8226676b3a4916a12d6c243b1934894e333ea2e97d0233f3260955ed2673/cryptography-42.0.7-cp39-abi3-macosx_10_12_universal2.whl (5.9 MB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.9/5.9 MB 1.0 MB/s eta 0:00:00
      Collecting cffi>=1.12 (from cryptography)
      Downloading https://mirrors.aliyun.com/pypi/packages/c4/01/f5116266fe80c04d4d1cc96c3d355606943f9fb604a810e0b02228a0ce19/cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl (176 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 176.8/176.8 kB 1.2 MB/s eta 0:00:00
      Collecting pycparser (from cffi>=1.12->cryptography)
      Downloading https://mirrors.aliyun.com/pypi/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl (117 kB)
      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.6/117.6 kB 1.1 MB/s eta 0:00:00
      Installing collected packages: pycparser, cffi, cryptography
      Successfully installed cffi-1.16.0 cryptography-42.0.7 pycparser-2.22
      (venv) (base) adamhuan@Leviathan django_daily_media %
      复制


      然后,再次尝试启动Django项目,就没有问题了:

        /Users/adamhuan/PycharmProjects/django_daily_media/venv/bin/python Users/adamhuan/PycharmProjects/django_daily_media/manage.py runserver 8000
        Performing system checks...


        Watching for file changes with StatReloader
        System check identified no issues (0 silenced).
        May 11, 2024 - 15:49:28
        Django version 5.0.6, using settings 'django_daily_media.settings'
        Starting development server at http://127.0.0.1:8000/
        Quit the server with CONTROL-C.




        复制





        END




        温馨提示



        如果你喜欢本文,请分享到朋友圈,想要获得更多信息,请关注我。


        文章转载自Nephilim,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论