Django MySQL выдает ошибку, Библиотека не загружена: / usr / local / opt / mysql@5.6/lib/libmysqlclient.18.dylib Когда я обновился с 5.6 до 5.7 mysql - PullRequest
0 голосов
/ 07 мая 2020

Да, это похоже на частую ошибку. Но что-то еще не так с моим окружением. Я обновил версию MySQL 5.6 до 5.7.

Я могу получить доступ к mysql5.7, набрав mysql в консоли.

Я обновил DYLD_LIBRARY_PATH, чтобы отразить новое расположение 5.7

git:(parent-child) ✗ echo $DYLD_LIBRARY_PATH
/usr/local/opt/mysql@5.7/lib/:

Но ошибка для причина по-прежнему говорит, что пытается загрузить с версии 5.6.

Exception in thread django-main-thread:
Traceback (most recent call last):
  File "/Users/vineeth/envs/automize2.0/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 16, in <module>
    import MySQLdb as Database
  File "/Users/vineeth/envs/automize2.0/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
    from . import _mysql
ImportError: dlopen(/Users/vineeth/envs/automize2.0/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/mysql@5.6/lib/libmysqlclient.18.dylib
  Referenced from: /Users/vineeth/envs/automize2.0/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
  Reason: image not found

Обратите внимание, что ошибка говорит о том, что он все еще пытается найти /usr/local/opt/mysql@5.6/lib/libmysqlclient.18.dylib

Я переустановил почти все с момента появления этой ошибки.

Пробовал несколько решений

Python mysqldb: Библиотека не загружена: libmysqlclient.18.dylib

rails + MySQL on OSX: библиотека не загружена: libmysqlclient.18.dylib

Похоже, что ничего не изменило ссылку на нее.

Как сделать так, чтобы он ссылался на более новый, который находится в /usr/local/opt/mysql@5.7/lib/

Также переустановил mysqlclient с помощью pip, но все равно не повезло.

Помощь приветствуется. Боролся с дня.

1 Ответ

1 голос
/ 07 мая 2020

Чтобы развернуть мой комментарий как ответ:

Pip компилирует пакеты с исходным кодом в колеса, которые кэшируются в ваш локальный кеш Pip. Однако он не знает «внешних» зависимостей, которые могут повлиять на то, как компилируется двоичный пакет, в данном случае MySQL разделяемая библиотека.

Воссоздание virtualenv напрямую не поможет, так как Pip будет используйте кешированное двоичное колесо (чтобы уберечь вас от перекомпиляции).

Вы можете:

  • использовать pip install --no-cache-dir, чтобы Пип вообще не использовал кеш (хотя «испорченный "колесо останется в вашем кеше)
  • уничтожить весь кеш Pip с орбиты
  • посмотреть, что получится https://github.com/pypa/pip/issues/2882 / https://github.com/pypa/pip/issues/4685 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...