Я только что скомпилировал и установил mysqldb для Python 2.7 на моем Mac OS 10.6. Я создал простой тестовый файл, который импортирует
import MySQLdb as mysql
Во-первых, эта команда подчеркнута красным, и информация говорит мне «Неразрешенный импорт». Затем я попытался запустить следующий простой код Python
import MySQLdb as mysql
def main():
conn = mysql.connect( charset="utf8", use_unicode=True, host="localhost",user="root", passwd="",db="" )
if __name__ == '__main__'():
main()
При его выполнении я получаю следующее сообщение об ошибке
Traceback (most recent call last):
File "/path/to/project/Python/src/cvdv/TestMySQLdb.py", line 4, in <module>
import MySQLdb as mysql
File "build/bdist.macosx-10.6-intel/egg/MySQLdb/__init__.py", line 19, in <module>
\namespace cvdv
File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.6-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so
Reason: image not found
Какое может быть решение моей проблемы?
РЕДАКТИРОВАТЬ: На самом деле я обнаружил, что библиотека находится в / usr / local / mysql / lib. Так что мне нужно сказать моей версии затмения pydev, где ее найти. Где я могу установить это?
источник
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
mysql55
через MacPorts и для решения этой ошибки сделал:sudo ln -s mysql/libmysqlclient.18.dylib /opt/local/lib/mysql55/libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql-5.5.29-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Мой предпочтительный метод состоит в том, чтобы на самом деле исправить библиотеку, а не играть с переменными окружения, которые могут или не могут быть в действительности в зависимости от того, как выполняется приложение. На самом деле это довольно простой процесс.
Во-первых, посмотрите на вывод ошибок, чтобы увидеть, где находится модуль Python, который нарушает работу:
Итак, файл-нарушитель - /Library/Python/2.7/site-packages/_mysql.so
Затем выясните, где _mysql.so считает, что должен найти libmysqlclient.18.dylib:
Итак, он ищет libmysqlclient.18.dylib без информации о пути, давайте исправим это:
Теперь _mysql.so знает полный путь к библиотеке, и все работает, независимо от переменных среды.
источник
Я обнаружил, что было другое решение этой проблемы, а не создание символической ссылки.
Вы задаете путь к каталогу, в котором находится libmysqlclient.18.dylib, к переменной среды DYLD_LIBRARY_PATH. Я сделал следующую строку в моем .bash_profile:
Вот и все.
источник
В моем случае я получал ошибку с Mac OS X 10.9 Mavericks. Я установил MySQL Community Server непосредственно с веб-сайта Oracle / MySQL от DMG.
Все, что мне нужно было сделать - это создать символическую ссылку на файлы lib в каталог / usr / local / lib.
Бонус: если вы используете Mac OS X, есть отличный инструмент для поиска таких файлов, как файл libmysqlclient.18.dylib, http://apps.tempel.org/FindAnyFile . Вот так я и нашел местоположение файла dylib.
источник
/usr/local/lib
каталог, но работал как шарм!Я обнаружил, что помещать это в ваш .profile или .bashrc (в зависимости от того, что вы используете) - это самый простой способ сделать это, ссылки на sym грязные по сравнению с хранением путей в ваших исходных файлах.
Также по сравнению с ответом yoshisurfs, большую часть времени, когда mysql устанавливается, каталог mysql должен быть переименован в mysql, а не в полное имя файла, для простоты использования.
источник
Я столкнулся с этим с парой виртуальных сред.
Работал оба раза.
источник
В плагине pydev eclipse вы можете установить переменную окружения для DYLD. Путь может быть установлен, как показано в
Установите mysqldb на снежного барса
источник
Для тех, кто использует homebrew, вы можете исправить это с помощью:
источник
В моем случае, в El Capitan (OSX 10.11), я должен сделать следующее в
~/.bash_profile
источник
когда вы находитесь в El Capitan, появится сообщение об ошибке:
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
необходимо закрыть «Защита целостности системы».сначала перезагрузитесь и удерживайте cmd + R, чтобы войти в режим восстановления, затем запустите терминал и введите команду:
csrutil disable
теперь вы можете перезагрузиться и попробовать снова.источник
libmysqlclient.18.dylib
в/usr/local/lib
и добавить путьPATH=/usr/local/lib:$PATH
к bash_profile. Это работает для меня.В новой установке El Capitan, где по умолчанию включен SIP (без root, доступ к usr / lib /), и вы не можете создать символическую ссылку, если не находитесь в режиме восстановления. Как сказал @yannisxu, вы можете отключить SIP и сделать символическую ссылку на / usr / lib / local, и это будет работать.
Вы можете использовать следующую команду в MAC OSX El Capitan вместо отключения SIP:
Раньше был вариант, когда вы можете войти в систему как root, и это может отключить SIP, но в окончательном выпуске, который сейчас устарел, вы можете прочитать об этом здесь: https://forums.developer.apple.com/thread/4686
Вопрос:
В Developer Beta 1 доступна команда nvram boot-args, которая может отключить SIP при запуске с привилегиями root:
Будет ли эта опция отключения SIP также доступна в версии El Capitan? Или это строго для Developer Builds?
Ответ:
Эта команда nvram boot-args исчезнет. Он не будет доступен в релизной версии El Capitan и может исчезнуть до конца Бета-версий для разработчиков. Следите за заметками о выпуске будущих бета-версий для разработчиков.
источник
У меня была эта проблема, и мне потребовалось некоторое время, чтобы понять, как это исправить.
Мой случай немного отличается. Мой MySQL сервер имеет версию 5.1.x. И как-то я обновил свой MySQL-python с 1.2.3 до 1.2.5. И я продолжал получать эту проблему с тех пор, как событие, я добавил следующую мягкую ссылку.
Оказывается, что для MySQL 5.1.x нет libmysqlclient.18.dylib, а только libmysqlclient.16.dylib. Вы можете исправить эту проблему, либо понизив MySQL-python до 1.2.3, либо обновив MySQL-сервер до 5.6.x (я не пробовал 5.5.x.)
Я понизил библиотеку до 1.2.3, так как обновление MySQL не вариант для меня.
источник
перейдите на http://dev.mysql.com/downloads/connector/c/ и загрузите MySQL Connector / C. после получения пакета создайте новый каталог «mysql», распакуйте файл коннектора MySQL в каталоге «mysql», затем в разделе «mysql» создайте еще один пустой каталог «build». Мы будем использовать «build» для сборки MySQL Connector / C. cd build && cmake ../your-MySQL-Connector-source-dir make && make install после make install, вы получите каталог с именем mysql в каталоге / usr / local. он содержит все нужные вам заголовки и библиотеки. Перейдите в этот каталог и скопируйте заголовки и библиотеки в соответствующие местоположения.
источник
можешь попробовать:
источник
Примечание об ошибке MySQL Connector / C в macOS (моя текущая версия 10.13.2), исправьте mysql_config и переустановите mysqlclient или MySQL-python, здесь подробно
источник