Python mysqldb: библиотека не загружена: libmysqlclient.18.dylib - PullRequest
167 голосов
/ 17 июня 2011

Я только что скомпилировал и установил 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, где ее найти.Где я могу установить это?

Ответы [ 15 ]

1 голос
/ 07 октября 2015

В новой установке El Capitan, где по умолчанию включен SIP (без рутинного доступа к usr / lib /), и вы не можете создать символическую ссылку, если не находитесь в режиме восстановления. Как сказал @yannisxu, вы можете отключить SIP и сделать символическую ссылку на / usr / lib / local, и это будет работать.

вы можете использовать следующую команду в MAC OSX El Capitan вместо отключения SIP:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

Раньше была возможность, когда вы можете войти в систему как root, и это может отключить SIP, но в окончательном выпуске, который сейчас устарел, вы можете прочитать об этом здесь: https://forums.developer.apple.com/thread/4686

Вопрос:

В Developer Beta 1 доступна команда nvram boot-args, которая может отключить SIP при запуске с правами root:

nvram boot-args="rootless=0"

Будет ли эта опция отключения SIP также доступна в версии El Capitan? Или это строго для Developer Builds?

Ответ:

Эта команда nvram boot-args исчезнет. Он не будет доступен в версии релиза El Capitan и может исчезнуть до конца Бета-версий для разработчиков. Следите за заметками о выпуске будущих бета-версий для разработчиков.

0 голосов
/ 28 апреля 2019

Примечание об ошибке MySQL Connector / C в macOS (моя текущая версия 10.13.2), исправьте mysql_config и переустановите mysqlclient или MySQL-python, здесь подробно

0 голосов
/ 10 февраля 2018

Вы можете попробовать:

sudo install_name_tool -change libmysqlclient.18.dylib /Users/toom/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so`
0 голосов
/ 27 июля 2016

перейдите на 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. он содержит все нужные вам заголовки и библиотеки. Перейдите в этот каталог и скопируйте заголовки и библиотеки в соответствующие местоположения.

0 голосов
/ 14 июля 2014

У меня была эта проблема, и мне потребовалось некоторое время, чтобы понять, как это исправить.

Мой случай немного отличается.Мой MySQL сервер имеет версию 5.1.x.И как-то я обновил свой MySQL-python с 1.2.3 до 1.2.5.И я продолжал получать эту проблему с тех пор, как событие, я добавил следующую мягкую ссылку.

libmysqlclient.18.dylib -> /usr/local/mysql/lib/libmysqlclient.18.dylib

Оказывается, что для 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 для меня не вариант.

...