Пока разбирался, проделал несколько итерация установить/удалить/переустановить (примерно час заняло) -- поэтому не могу сказать, что конкретно сработало. Выводы такие:
- mysql-connector-python -- не нужен. Похоже именно он вставал колом, и не давал коннекта в базу данных. Похоже, что его притащило в виртуальное окружение во время предыдущих экспериментов, и я его принял за зависимость..
- симлинки не нужны -- mysqlclient отлично находит сокет базы.
В результате последовательность действий:
brew install mariadb-connector-c
source ~/path-to-project-enveroment/bin/activate
pip install mysqlclient
# выключаем окружение отключаем системный коннектор (можно не делать)
deactivate
brew unlink mariadb-connector-c
После обновления macOS до 13.0 Ventura потребуется предварительно сделать команду:
xcode-select --install
И повторить все еще один раз.
P.S. Отдельную проблему создает то, что имя хоста на macOS может меняться. У меня код в Django проверяет на каком хосте запущен и подставляет соответствующие настройки в
settings.py ... В моем случае, в
hostname прописано
m1
, но проверка через Python показывает:
import socket
socket.gethostname()
'm1.N1'
Догадки, но кажется добавление N1 как-то связано с моделью домашнего интернет-роутера... Почему macOS его добавляет, а другие компы в сети нет -- загадка. Иногда
hostname может становится
'm1.local'
(и для этого не надо перезагружаться, достаточно просто чтоб компьютер перешел в режим сна... хотя х.з. ... в macOS гибридный режим сна, и если во время сна перегружается по питанию, внешне это никак не заметно). В общем, это странное поведение
hostname тоже попортило немного крови. :)