Не удаётся установить mariadb коннектор для Python.

Вопрос или проблема

Я использую систему Arch Linux.
Я использую виртуальную среду, созданную с помощью:

python -m venv .venv

Я хотел подключиться к MariaDB, используя Python.
Сначала я попробовал “mysql-connector-python”, но у него были некоторые проблемы.

    raise get_mysql_exception(
mysql.connector.errors.DatabaseError: 1273 (HY000): Неизвестная сопоставляемость: 'utf8mb4_0900_ai_ci'

Затем я попытался установить коннектор MariaDB с помощью:

source .venv/bin/activate
pip3 install mariadb

Я получаю эту ошибку и не могу найти решение

Сборка mariadb==1.0.11
  Загрузка mariadb-1.0.11.zip (85 кБ)
  Установка зависимостей для сборки ... готово
  Получение требований для сборки колеса ... готово
  Подготовка метаданных (pyproject.toml) ... готово
Сборка колес для собранных пакетов: mariadb
  Сборка колеса для mariadb (pyproject.toml) ... ошибка
  ошибка: подпроцесс завершился с ошибкой
  
  × Сборка колеса для mariadb (pyproject.toml) не прошла успешно.
  │ код выхода: 1
  ╰─> [36 строк вывода]
      запуск bdist_wheel
      запуск сборки
      запуск build_py
      создание build/lib.linux-x86_64-cpython-312/mariadb
      копирование mariadb/__init__.py -> build/lib.linux-x86_64-cpython-312/mariadb
      копирование mariadb/__init__.py -> build/lib.linux-x86_64-cpython-312/mariadb
      создание build/lib.linux-x86_64-cpython-312/mariadb/constants
      копирование mariadb/constants/__init__.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
      копирование mariadb/constants/CLIENT.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
      копирование mariadb/constants/INDICATOR.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
      копирование mariadb/constants/CURSOR.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
      копирование mariadb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-cpython-312/mariadb/constants
      запуск build_ext
      сборка расширения 'mariadb._mariadb'
      создание build/temp.linux-x86_64-cpython-312/mariadb
      gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -ffat-lto-objects -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -fPIC -DPY_MARIADB_MAJOR_VERSION=1 -DPY_MARIADB_MINOR_VERSION=0 -DPY_MARIADB_PATCH_VERSION=11 -I/usr/include/mysql -I/usr/include/mysql/mysql -I./include -I/home/anand_maurya/Documents/SchoolProject/.venv/include -I/usr/include/python3.12 -c mariadb/mariadb.c -o build/temp.linux-x86_64-cpython-312/mariadb/mariadb.o -DDEFAULT_PLUGINS_SUBDIR=\"/usr/lib/mysql/plugin\"
      mariadb/mariadb.c: В функции ‘PyInit__mariadb’:
      mariadb/mariadb.c:155:35: ошибка: требуется lvalue как левый операнд присваивания
        155 |     Py_TYPE(&MrdbConnection_Type) = &PyType_Type;
            |                                   ^
      mariadb/mariadb.c:168:31: ошибка: требуется lvalue как левый операнд присваивания
        168 |     Py_TYPE(&MrdbCursor_Type) = &PyType_Type;
            |                               ^
      mariadb/mariadb.c:174:29: ошибка: требуется lvalue как левый операнд присваивания
        174 |     Py_TYPE(&MrdbPool_Type) = &PyType_Type;
            |                             ^
      mariadb/mariadb.c:180:34: ошибка: требуется lvalue как левый операнд присваивания
        180 |     Py_TYPE(&MrdbIndicator_Type) = &PyType_Type;
            |                                  ^
      mariadb/mariadb.c:186:38: ошибка: требуется lvalue как левый операнд присваивания
        186 |     Py_TYPE(&Mariadb_Fieldinfo_Type) = &PyType_Type;
            |                                      ^
      mariadb/mariadb.c:192:38: ошибка: требуется lvalue как левый операнд присваивания
        192 |     Py_TYPE(&Mariadb_DBAPIType_Type) = &PyType_Type;
            |                                      ^
      ошибка: команда '/usr/bin/gcc' завершилась с кодом 1
      [конец вывода]
  
  примечание: Эта ошибка происходит из подпроцесса и скорее всего не является проблемой pip.
  ОШИБКА: завершение сборки колеса для mariadb
Не удалось собрать mariadb
ОШИБКА: ОШИБКА: Не удалось создать установочные колеса для некоторых проектов на основе pyproject.toml (mariadb)

Буду признателен за любой отзыв.

Условный коннектор MariaDB/Python версии 1.0.x больше не поддерживается – используйте 1.1.x вместо.

Если вы хотите использовать старую версию 1.0.11, вам также потребуется более старая версия Python. Поддерживаемые версии Python для коннектора MariaDB/Python 1.0.11 определены в setup.py:

      'Programming Language :: Python :: 3.6',
      'Programming Language :: Python :: 3.7',
      'Programming Language :: Python :: 3.8',
      'Programming Language :: Python :: 3.9',
      'Programming Language :: Python :: 3.10',

Ответ или решение

Проблема, с которой вы столкнулись при установке MariaDB Connector/Python, может быть вызвана несколькими факторами, включая несовместимость версий и отсутствие необходимых библиотек. Давайте рассмотрим шаги для устранения данной проблемы.

Шаг 1: Версия Python

Первое, на что стоит обратить внимание, это версия Python, используемая в вашем виртуальном окружении. Как вы указали, вы пытаетесь установить версию MariaDB Connector/Python 1.0.11, которая больше не поддерживается. Эта версия поддерживает лишь Python 3.6–3.10. Если у вас установлена более новая версия Python (например, 3.11 или 3.12), вам следует либо установить поддерживаемую версию Python, либо перейти на новую версию MariaDB Connector.

Решение:

  1. Проверьте текущую версию Python, активировав ваше виртуальное окружение и выполнив команду:

    python --version
  2. Если версия Python выше 3.10, попробуйте использовать более новую версию MariaDB Connector, например:

    pip install mariadb==1.1.0

Шаг 2: Установка необходимых зависимостей

Для успешной сборки пакета могут понадобиться некоторые системные библиотеки. Убедитесь, что у вас установлены необходимые заголовочные файлы для разработки библиотеки MariaDB. В Arch Linux вам, возможно, потребуется установить пакет mariadb и gcc, если они еще не установлены. Вы можете сделать это с помощью следующей команды:

sudo pacman -S mariadb gcc

Шаг 3: Очистка кэша pip

Иногда проблемы могут возникнуть из-за кэша pip. Попробуйте очистить кэш, прежде чем повторно устанавливать пакет:

pip cache purge

Шаг 4: Установка MariaDB Connector

После выполнения всех вышеуказанных действий попробуйте установить MariaDB Connector снова. Если вы используете более новую версию, вам достаточно выполнить:

pip install mariadb

Шаг 5: Запуск отладки

Если вы все еще получаете ошибки, запустите pip с опцией отладки, чтобы увидеть более подробные логи:

pip install mariadb --verbose

Резюме

Ваша проблема, вероятно, связана с устаревшей версией MariaDB Connector/Python и несовместимой версией Python. Обновите соединитель до более новой версии и убедитесь, что у вас установлены все необходимые зависимости. Следуя этим шагам, вы сможете установить MariaDB Connector без ошибок. Если проблемы сохраняются, рассмотрите возможность использования других библиотек, таких как mysql-connector-python, или обратитесь к документации MariaDB для получения дополнительной информации.

Оцените материал
Добавить комментарий

Капча загружается...