устранение проблем с установкой mysqlclient
This commit is contained in:
parent
315142b68f
commit
04cc286b6b
77
python-mysql.md
Normal file
77
python-mysql.md
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
# Устранение возникшей проблемы с установкой mysqlclient (подключение к MySQL/MariaDB)
|
||||||
|
|
||||||
|
Обычным порядком установка осущесмтвляется командой:
|
||||||
|
```bash
|
||||||
|
pip install mysqlclient
|
||||||
|
```
|
||||||
|
|
||||||
|
Но иногда возникают проблемы.
|
||||||
|
|
||||||
|
## Проблемы под Apple Mac OS
|
||||||
|
|
||||||
|
Если mysqlclient не устанавливается, то возможно нет БД-коннектора в системе.
|
||||||
|
Обычно такое происходит если сама СУБД размещена в контейнере Docker (при установке СУБД
|
||||||
|
в саму систему клиент «прилетает» автоматически).
|
||||||
|
|
||||||
|
Для MariaDB проблема решается временной установкой `mariadb-connector-c` и созданием
|
||||||
|
символической ссылки на `mysql_config`:
|
||||||
|
```bash
|
||||||
|
brew install mariadb-connector-c
|
||||||
|
sudo ln -s /usr/local/opt/mariadb-connector-c/bin/mariadb_config /usr/local/bin/mysql_config
|
||||||
|
```
|
||||||
|
|
||||||
|
Затем активизируем виртуальное окружение нашего проекта, устанавливаем mysqlclient и выходим
|
||||||
|
из виртуального окружения:
|
||||||
|
```bash
|
||||||
|
source ~/path-to-you-prj-enveroment/bin/activate
|
||||||
|
pip install mysqlclient
|
||||||
|
deactivate
|
||||||
|
```
|
||||||
|
|
||||||
|
Затем удаляем симлинк на коннектор и отключаем его:
|
||||||
|
```bash
|
||||||
|
sudo rm /usr/local/bin/mysql_config
|
||||||
|
brew unlink mariadb-connector-c
|
||||||
|
```
|
||||||
|
|
||||||
|
Аналогичным образом решается проблема и с MySQL. Отличается только устанавливаемый клиент:
|
||||||
|
```bash
|
||||||
|
brew install mysql-client
|
||||||
|
sudo ln -s /opt/homebrew/opt/mysql-client/bin/mysql_config /usr/local/bin/mysql_config
|
||||||
|
|
||||||
|
source ~/path-to-you-prj-enveroment/bin/activate
|
||||||
|
pip install mysqlclient
|
||||||
|
deactivate
|
||||||
|
|
||||||
|
rm /usr/local/bin/mysql_config
|
||||||
|
brew unlink mysql-client
|
||||||
|
```
|
||||||
|
|
||||||
|
## Проблемы с MYSQLCLIENT_CFLAGS и MYSQLCLIENT_LDFLAGS
|
||||||
|
|
||||||
|
Может возникнуть и под Linux, и под Windows, и под Mac OS (например при обновлении операционной системы, когда
|
||||||
|
все системные настройки могут слететь). При установке mysqlclient выдается что-то типа такого сообщения:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Exception: Can not find valid pkg-config name.
|
||||||
|
Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually
|
||||||
|
[end of output]
|
||||||
|
```
|
||||||
|
|
||||||
|
То есть не заданы переменные окружения MYSQLCLIENT_CFLAGS и MYSQLCLIENT_LDFLAGS. Придется
|
||||||
|
их задать вручную в терминале:
|
||||||
|
|
||||||
|
1. Определим расположение заголовочных файлов и библиотек MySQL (или MariaDB). Размещение
|
||||||
|
этих файлов отличаются в зависимости от способов установки MySQL и операционной системы.
|
||||||
|
Используем команду `mysql_config` для получения этой информации. Запустим команду `mysql_config --cflags`,
|
||||||
|
чтобы получить расположение заголовочных файлов, и команду `mysql_config --libs`, чтобы найти расположение
|
||||||
|
библиотек. Запишем то что вывели эти обе команды.
|
||||||
|
2. Установим переменную окружения `MYSQLCLIENT_CFLAGS`. Выполним команду: `export MYSQLCLIENT_CFLAGS="-I"`,
|
||||||
|
заменив в ней все внутри кавычек (`-I`) путем, который получили с помощью `mysql_config --cflags`.
|
||||||
|
Например, у меня получилось вот так: `export MYSQLCLIENT_CFLAGS="-I/usr/local/opt/mysql-client/include/mysql"`.
|
||||||
|
3. Установим переменную окружения `MYSQLCLIENT_LDFLAGS`. Выполним команду: `export MYSQLCLIENT_LDFLAGS="-L"`,
|
||||||
|
заменив в ней все внутри кавычек (`-L`) путем, который получили с помощью `mysql_config --libs`.
|
||||||
|
Например, у меня получилось вот так: `export MYSQLCLIENT_LDFLAGS="-L/opt/homebrew/opt/mysql-client/lib
|
||||||
|
-lmysqlclient -lz -lzstd -L/opt/homebrew/lib -lssl -lcrypto -lresolv"`.
|
||||||
|
|
||||||
|
Теперь, установка mysqlclient должна пройти успешно.
|
Loading…
Reference in New Issue
Block a user