Мой предпочтительный метод состоит в том, чтобы на самом деле исправить библиотеку, а не играть с переменными окружения, которые могут или не могут фактически находиться в области видимости, в зависимости от того, как выполняется приложение.На самом деле это довольно простой процесс.
Сначала посмотрите на вывод ошибок, чтобы увидеть, где находится неисправный модуль python:
ImportError: dlopen (/Library/Python/2.7/site-packages/_mysql.so, 2): библиотека не загружена: libmysqlclient.18.dylib Ссылка на: /Library/Python/2.7/site-packages/_mysql.so Причина: изображение не найдено
Хорошо, значит файл-нарушитель - /Library/Python/2.7/site-packages/_mysql.so
Затем выясните, где _mysql.so считает, что он должен найти libmysqlclient.18.dylib:
% otool -L /Library/Python/2.7/site-packages/_mysql.so
/Library/Python/2.7/site-packages/_mysql.so:
libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
Итак, он ищет libmysqlclient.18.dylib без информации о пути, давайте исправим это:
% sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Library/Python/2.7/site-packages/_mysql.so
Теперь _mysql.so знает полный путь к библиотеке и все работает, независимо от того,переменных среды.
% otool -L /Library/Python/2.7/site-packages/_mysql.so
/Library/Python/2.7/site-packages/_mysql.so:
/usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)