Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment installer MySQLdb (bibliothèque d'accès aux données Python pour MySQL) sur Mac OS X ?

Mise à jour pour ceux qui utilisent Python3 : Vous pouvez simplement utiliser conda install mysqlclient pour installer les bibliothèques nécessaires à l'utilisation de MySQLdb tel qu'il existe actuellement. La question SO suivante était un indice utile :Python 3 ImportError :Aucun module nommé 'ConfigParser' . L'installation de mysqlclient installera mysqlclient, mysql-connector et llvmdev (au moins, il a installé ces 3 bibliothèques sur ma machine).

Voici le récit de mon expérience décousue avec ce problème. J'adorerais le voir édité ou généralisé si vous avez une meilleure expérience du problème... appliquez un peu de cette SO magie.

Remarque :les commentaires du paragraphe suivant s'appliquent à Snow Leopard, mais pas à Lion, qui semble nécessiter MySQL 64 bits

Tout d'abord, l'auteur (encore ?) de MySQLdb dit ici que l'un des problèmes les plus pernicieux est que OS X est installé avec une version 32 bits de Python, mais la plupart des utilisateurs moyens (moi y compris) sautent probablement pour installer la version 64 bits de MySQL. Mauvaise décision... supprimez la version 64 bits si vous l'avez installée (des instructions sur cette tâche fastidieuse sont disponibles sur SO ici ), puis téléchargez et installez la version 32 bits (package ici )

Il existe de nombreuses étapes sur la façon de construire et d'installer les bibliothèques MySQLdb. Ils ont souvent des différences subtiles. Ceci m'a semblé le plus populaire et a fourni la solution de travail. Je l'ai reproduit avec quelques modifications ci-dessous

Étape 0 : Avant de commencer, je suppose que vous avez MySQL, Python et GCC installé sur le mac.

Étape 1 : Téléchargez le dernier Adaptateur MySQL pour Python de SourceForge.

Étape 2 : Extrayez votre package téléchargé :

tar xzvf MySQL-python-1.2.2.tar.gz

Étape 3 : Dans le dossier, nettoyez le package :

sudo python setup.py clean

QUELQUES ÉTAPES SUPPLÉMENTAIRES, (de ce commentaire )

Étape 3b : Supprimez tout sous votre répertoire MySQL-python-1.2.2/build/* -- ne faites pas confiance au "python setup.py clean" pour le faire pour vous

Étape 3c : Supprimez l'œuf sous Users/$USER/.python-eggs

Étape 4 : À l'origine, la modification de _mysql.c était requise, mais elle n'est désormais PLUS NÉCESSAIRE. La communauté MySQLdb semble avoir corrigé ce bogue maintenant.

Étape 5 : Créez un lien symbolique sous lib pour pointer vers un sous-répertoire appelé mysql. C'est là qu'il recherche lors de la compilation.

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

Étape 6 : Modifiez le fichier setup_posix.py et modifiez les éléments suivants

mysql_config.path ="mysql_config"

à

mysql_config.path ="/usr/local/mysql/bin/mysql_config"

Étape 7 : Dans le même répertoire, reconstruisez votre package (ignorez les avertissements qui l'accompagnent)

sudo python setup.py build

Étape 8 : Installez le package et vous avez terminé.

sudo python setup.py install

Étape 9 : Testez si cela fonctionne. Cela fonctionne si vous pouvez importer MySQLdb.

python

>>> import MySQLdb

Étape 10 : Si lors de la tentative d'importation, vous recevez une erreur indiquant que Library not loaded: libmysqlclient.18.dylib se terminant par :Reason: image not found vous devez créer un lien symbolique supplémentaire qui est :

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

Vous devriez alors pouvoir import MySQLdb sans aucune erreur.

Un dernier hic cependant est que si vous démarrez Python à partir du répertoire de construction, vous obtiendrez cette erreur :

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3 :UserWarning :le module _mysql a déjà été importé depuis /Library/Python/2.5/ site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, mais XXXX/MySQL-python-1.2.3c1 est ajouté à sys.path

C'est assez facile pour Google, mais pour vous éviter les ennuis, vous vous retrouverez ici (ou peut-être pas... pas une URL particulièrement pérenne) et comprendre que vous devez cd .. out of build directory et l'erreur devrait disparaître.

Comme je l'ai écrit en haut, j'aimerais voir cette réponse généralisée, car il existe de nombreuses autres expériences spécifiques de cet horrible problème. Modifiez ou fournissez votre propre meilleure réponse.