Je viens de compiler et d'installer mysqldb pour python 2.7 sur mon mac os 10.6. J'ai créé un fichier de test simple qui importe
import MySQLdb as mysql
Premièrement, cette commande est soulignée en rouge et les informations me disent "Importation non résolue". Ensuite, j'ai essayé d'exécuter le code python simple suivant
import MySQLdb as mysql
def main():
conn = mysql.connect( charset="utf8", use_unicode=True, host="localhost",user="root", passwd="",db="" )
if __name__ == '__main__'():
main()
Lors de son exécution, j'obtiens le message d'erreur suivant
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
Quelle pourrait être la solution à mon problème?
EDIT: En fait, j'ai découvert que la bibliothèque se trouve dans / usr / local / mysql / lib. J'ai donc besoin de dire à ma version pydev eclipse où le trouver. Où dois-je définir cela?
la source
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
mysql55
via MacPorts et pour résoudre cette erreursudo 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
Ma méthode préférée est de réparer la bibliothèque plutôt que de jouer avec des variables d'environnement qui peuvent ou non être dans la portée en fonction de la façon dont l'application est exécutée. C'est en fait un processus assez simple.
Tout d'abord, regardez la sortie d'erreur pour voir où se trouve le module python incriminé:
D'accord, donc le fichier incriminé est /Library/Python/2.7/site-packages/_mysql.so
Ensuite, déterminez où _mysql.so pense qu'il devrait trouver libmysqlclient.18.dylib:
Donc, il recherche libmysqlclient.18.dylib sans informations de chemin, corrigeons cela:
Maintenant, _mysql.so connaît le chemin complet de la bibliothèque et tout fonctionne, quelles que soient les variables d'environnement.
la source
J'ai trouvé qu'il y avait une autre solution à ce problème plutôt que de créer un lien symbolique.
Vous définissez le chemin de votre répertoire, où réside libmysqlclient.18.dylib, sur la variable d'environnement DYLD_LIBRARY_PATH. Ce que j'ai fait est de mettre la ligne suivante dans mon .bash_profile:
C'est tout.
la source
Dans mon cas, j'obtenais l'erreur avec Mac OS X 10.9 Mavericks. J'ai installé MySQL Community Server directement à partir du site Web Oracle / MySQL de DMG.
Tout ce que j'avais à faire était de créer un lien symbolique entre les fichiers lib et le répertoire / usr / local / lib.
Bonus: si vous utilisez également Mac OS X, il existe un excellent outil pour trouver des fichiers comme le fichier libmysqlclient.18.dylib, http://apps.tempel.org/FindAnyFile . C'est ainsi que j'ai trouvé à l'origine l'emplacement du fichier dylib.
la source
/usr/local/lib
répertoire, mais j'ai travaillé comme un charme!J'ai trouvé que mettre cela dans votre .profile ou .bashrc (selon ce que vous utilisez) est le moyen le plus simple de le faire, les liens sym sont désordonnés par rapport au maintien des chemins dans vos fichiers source.
Aussi comparé à la réponse de yoshisurfs, la plupart du temps, lorsque mysql est installé, le répertoire mysql doit être renommé juste en mysql, pas le nom complet du fichier, pour une facilité d'utilisation.
la source
J'ai rencontré cela avec quelques environnements virtuels.
A travaillé les deux fois.
la source
Dans le plugin pydev eclipse, vous souhaiterez peut-être définir la variable d'environnement pour DYLD. Le chemin peut être défini comme indiqué dans
Installez mysqldb sur Snow Leopard
la source
Pour ceux qui utilisent homebrew, vous pouvez résoudre ce problème avec:
la source
Dans mon cas, dans El Capitan (OSX 10.11), je dois suivre
~/.bash_profile
la source
lorsque vous êtes à El Capitan, vous obtiendrez une erreur: vous
ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted
devez fermer la "Protection de l'intégrité du système".Tout d'abord, redémarrez et maintenez cmd + R pour entrer en mode de récupération, puis lancez le terminal et tapez la commande
csrutil disable
:, vous pouvez maintenant redémarrer et réessayer.la source
libmysqlclient.18.dylib
à/usr/local/lib
et ajouter le cheminPATH=/usr/local/lib:$PATH
à bash_profile. Ça marche pour moi.Sur la nouvelle installation d'El Capitan où SIP (rootless empêche l'accès à usr / lib /) est activé par défaut et vous ne pouvez pas créer le lien symbolique sauf si vous êtes en mode de récupération. Comme @yannisxu l'a dit, vous pouvez désactiver SIP et créer votre lien symbolique vers / usr / lib / local et cela fonctionnera.
vous pouvez utiliser la commande suivante sur MAC OSX El Capitan au lieu de désactiver SIP:
Il y avait une option où vous pouvez vous connecter en tant que root et cela peut désactiver SIP, mais dans la version finale qui est maintenant obsolète, vous pouvez en savoir plus ici: https://forums.developer.apple.com/thread/4686
Question:
Il existe une commande nvram boot-args disponible dans Developer Beta 1 qui peut désactiver SIP lorsqu'elle est exécutée avec les privilèges root:
Cette option de désactivation de SIP sera-t-elle également disponible dans la version finale d'El Capitan? Ou est-ce strictement pour les versions de développeur?
Répondre:
Cette commande nvram boot-args disparaîtra. Il ne sera pas disponible dans la version finale d'El Capitan et pourrait disparaître avant la fin des bêtas du développeur. Gardez un œil sur les notes de publication des futures versions bêta des développeurs.
la source
J'ai eu ce problème et il m'a fallu un certain temps pour comprendre comment le résoudre.
Mon cas est légèrement différent. Mon serveur MySQL est de la version 5.1.x. Et d'une manière ou d'une autre, j'ai mis à niveau mon MySQL-python de 1.2.3 à 1.2.5. Et j'ai continué à avoir ce problème depuis lors, j'ai ajouté le lien logiciel suivant.
Il s'avère que pour MySQL 5.1.x, il n'y a pas de libmysqlclient.18.dylib, mais seulement libmysqlclient.16.dylib. Vous pouvez résoudre ce problème en rétrogradant votre MySQL-python en 1.2.3 ou en mettant à niveau votre serveur MySQL en 5.6.x (je n'ai pas essayé 5.5.x.)
J'ai rétrogradé la bibliothèque à la version 1.2.3 car la mise à niveau de MySQL n'est pas une option pour moi.
la source
allez sur http://dev.mysql.com/downloads/connector/c/ et téléchargez MySQL Connector / C. après avoir récupéré le paquet, créez un nouveau répertoire 'mysql', décompressez le fichier Mysql Connector sous le répertoire mysql, puis sous mysql, créez un autre répertoire vide 'build'. Nous utiliserons 'build' pour construire MySQL Connector / C. cd build && cmake ../your-MySQL-Connector-source-dir make && make install après make install, vous obtiendrez un répertoire nommé mysql sous / usr / local. il contient tous les en-têtes et bibliothèques dont vous avez besoin. Allez dans ce répertoire et copiez les en-têtes et les bibliothèques aux emplacements correspondants.
la source
tu peux essayer:
la source
Note sur le bogue de MySQL Connector / C sur macOS (ma version actuelle est 10.13.2), corrigez le mysql_config et réinstallez mysqlclient ou MySQL-python, voici le détail
la source