66 votes

Python: MySQLdb et "la Bibliothèque n'est pas chargé: libmysqlclient.16.dylib"

Le programme d'installation...

Essayer de mettre en place un nettoyage Mac os X 10.6 installer à développer en python/django et je ne me souviens pas de courir dans ce 10.5.

Après l'installation de MySQL à partir de l'installateur sur mysql-5.5.8-osx10.6-x86_64.dmg j'ai couru

$ sudo pip install MySQL-python

et il semblait aller facilement (sortie ci-dessous)

Downloading/unpacking MySQL-python
  Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded
  Running setup.py egg_info for package MySQL-python
    warning: no files found matching 'MANIFEST'
    warning: no files found matching 'ChangeLog'
    warning: no files found matching 'GPL'
Installing collected packages: MySQL-python
  Running setup.py install for MySQL-python
    building '_mysql' extension
    gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/local/mysql/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _mysql.c -o build/temp.macosx-10.6-universal-2.6/_mysql.o -Os -g -fno-common -fno-strict-aliasing -arch x86_64
    In file included from _mysql.c:36:
    /usr/local/mysql/include/my_config.h:325:1: warning: "SIZEOF_SIZE_T" redefined
    In file included from /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h:9,
                     from pymemcompat.h:10,
                     from _mysql.c:29:
    /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pymacconfig.h:33:1: warning: this is the location of the previous definition
    In file included from _mysql.c:36:
    /usr/local/mysql/include/my_config.h:419:1: warning: "HAVE_WCSCOLL" redefined
    In file included from /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h:8,
                     from pymemcompat.h:10,
                     from _mysql.c:29:
    /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pyconfig.h:803:1: warning: this is the location of the previous definition
    gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup build/temp.macosx-10.6-universal-2.6/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lpthread -o build/lib.macosx-10.6-universal-2.6/_mysql.so -arch x86_64
    warning: no files found matching 'MANIFEST'
    warning: no files found matching 'ChangeLog'
    warning: no files found matching 'GPL'
Successfully installed MySQL-python
Cleaning up...

après ce que j'ai essayé:

$ python -c "import MySQLdb"

et il a chié sur moi avec:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Library/Python/2.6/site-packages/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/Library/Python/2.6/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib
  Referenced from: /Library/Python/2.6/site-packages/_mysql.so
  Reason: image not found

Donc à ma question...

Qu'ai-je fait de mal?/De quoi dois-je faire?

Googler (et la recherche), pour cela renvoie beaucoup de résultats de recevoir ce message d'erreur avec Ruby pas trop avec Python tho.

97voto

lukmdo Points 3511

Il suffit de régler l' DYLD_LIBRARY_PATH après l'exécution de l' pip install ou easy_install:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

Devrait faire le travail en supposant que votre installation de MySQL vie en vertu de l' /usr/local/mysql.

57voto

Brian Clapper Points 11222

_mysql.so désigne libmysqlclient.16.dylib. Qui est, la bibliothèque partagée qui sert de pont entre Python et la bibliothèque cliente MySQL, _mysql.so, se réfère à la dynamique de la bibliothèque de la bibliothèque cliente MySQL, et que la bibliothèque ne peut pas être chargé pour une raison quelconque.

Questions auxquelles vous devez répondre:

  • Est-il un libmysqlclient.16.dylib n'importe où sur votre système? Si non, vous devez installer le client MySQL logiciel.
  • Si oui, est le répertoire contenant la bibliothèque de votre DYLD_LIBRARY_PATH ? Si pas, essayez de l'ajouter.
  • Si oui, vous devrez vous assurer que l' libmysqlclient.16.dylib le fichier n'est pas corrompu. Mon copie, installé en /opt/local/lib/mysql5/mysql/libmysqlclient.16.dylib, avec l'aimable autorisation de MacPorts, a signature MD5 c79ee91af08057dfc269ee212915801a et est 1,462,376 octets la taille. Quel est votre copie?

42voto

msbanik Points 191

Après easy_install, j'ai créer un doux lien qui a résolu le problème

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

8voto

catherine Points 964

Il peut également survenir si votre client MySQL est plus récente que votre MySQL-python package. Dans mon cas, j'ai eu un libmysqlclient_r.18.dylib sur ma machine, mais pas un libmysqlclient_r.16.dylib. L'exécution pip search mysql a révélé

MySQL-python - Python interface de MySQL: 1.2.3 Plus tard: 1.2.3c1

et en cours d'exécution pip install --upgrade MySQL-python fixé mon problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X