Python MySQL mal architecture d'erreur
J'ai été à ce temps et lire de nombreux sites sur le sujet. me soupçonne d'avoir indésirable mentir sur l'origine de ce problème. Mais où?
C'est le message d'erreur quand je import MySQLdb en python:
>>> import MySQLdb
/Library/Python/2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /Library/Python/2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg/_mysql.pyc, but /Users/phoebebr/Downloads/MySQL-python-1.2.3c1 is being added to sys.path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "MySQLdb/__init__.py", line 19, in <module>
import _mysql
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/phoebebr/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): no suitable image found. Did find:
/Users/phoebebr/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so: mach-o, but wrong architecture
Je suis en train de 64 bits donc vérifié ici:
file $(which python)
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386): Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc
file $(which mysql)
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
Ont mis ma version par défaut de python 2.6
python
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Essayé de supprimer le répertoire et python setup.py nettoyer
Renommé Python/2.5/site-packages de sorte qu'il ne pouvait pas essayer et ramasser ça.
Mise à JOUR
Supprimé tout et de suivre les instructions ici: Django + MySQL sur Mac OS Snow Leopard 10.6.2 installation à l'aide de macports.
Mais au fond toujours la même erreur
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQLdb/__init__.py", line 19, in <module>
import _mysql
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/_mysql.so, 2): no suitable image found. Did find:
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/_mysql.so: mach-o, but wrong architecture
>>>
- Votre bibliothèque (
_mysql.so
dans/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/_mysql.so
) est la mauvaise architecture (très probable 32 bits). Vous y êtes presque. 🙂 - Malheureusement, en essayant de reconstruire à partir du code source a provoqué une erreur dans L'-Black-Book-2:MySQL-python-1.2.3 phoebebr$ ARCHFLAGS='-arch x86_64' python setup.py construire sh: mysql_config: command not found Désinstallé tous les macports installer et de faire une réinstallation à partir de zéro à nouveau dans l'espoir que toutes les versions de match cette fois.
- OK désinstallé tous les macports installe, tout enlevé sur mon disque dur liées à mysql. Installé mysql à partir de package sur le site de mysql, téléchargé python-mysql et construit en utilisant les mêmes instructions que j'ai utilisés à l'origine, que cette fois ça a fonctionné. N'ont aucune idée de ce qui est différent cette fois, mais il ne fonctionne pas... Merci pour jdinuncio et de belvoir - vous étiez tous les deux à droite, mais a dû choisir un donc choisi la première personne qui a répondu! Espère que c'est ok.
- J'ai été aux prises avec MySQLDB depuis hier soir. Ma config: Mac OS X 10.5.8; Python 2.5; avais téléchargé et installé en 64 bits MySQL avec le DMG; installé MySQLDB à l'aide de leur lisez-moi; j'ai obtenu l'erreur qui est mentionné dans la question. Essayé différentes approches à d'autres sites internet. Solution de dernier message par Pekka Toiminen, le 22 Février à 17:08 travaillé pour moi. Merci!!!!
Vous devez vous connecter pour publier un commentaire.
Lorsque l'interprète est dit:
DONC, il semble que vous avez terminé avec la mauvaise version de MySQLdb. Supprimer
/Utilisateurs/phoebebr/.python-oeufs/MySQL_python-1.2.3c1-py2.6-macosx 10.6-universelle.l'œuf de la tmp et /Utilisateurs/phoebebr/Téléchargements/MySQL-python-1.2.3c1. De nouveau le Test pour voir si la version
dans /bibliothèque des oeuvres. Si pas, téléchargez le binaire pour MacOS. En dernière instance, télécharger
la source de MySQL-python et le compiler.
Je avoir un nouveau MacBook Air, et j'ai réussi à obtenir MySQLdb de travail en procédant comme suit:
(Snow Leopard 10.6.6, préinstallé Python)
Télécharger MySQL 32 bits fichier dmg à partir de mysql des pages, l'Installer.
Ajoutez les lignes suivantes à votre ~/.profil (ou ~/.bash_profile):
Après l'enregistrement, tapez la commande suivante dans le terminal:
source ~/.profil
Télécharger le MySQL-python-1.2.3.tar.gz décompressez, décompresser, cd vers le répertoire
la sortie de ce répertoire (ou vous aurez un message d'avertissement)
ou
fonctionne comme il se doit!!
J'ai juste eu du mal avec les mêmes, malgré les nombreuses réponses, je vais donc le risque d'en ajouter un autre:
python -c 'import platform; print platform.platform()'
. Il se termine en "64 bits"?ls -l /usr/local/mysql
. C'est un lien symbolique: il se termine en "x86_64"?Si python dit "64 bits", alors vous voulez que mysql pour "x86_64" (recherche des http://dev.mysql.com/downloads/mysql/). Si python dit "32 bits", alors vous voudrez probablement le "x86" mysql. Si vous avez une correspondance, mais ça ne fonctionne toujours pas, puis de lire les autres réponses (environ VERSIONER_PYTHON_PREFER_32_BIT etc.)
Pour moi, le décalage causé la
"mach-o, but wrong architecture"
erreur. L'erreur suivante a été"Library not loaded: libmysqlclient.18.dylib... Reason: image not found"
.Pour résoudre celui-ci, je vous recommande l'ajout d'un lien symbolique (plutôt que de créer DYLD_LIBRARY_PATH, comme expliqué dans d'autres réponses):
Elle est causée par votre Python est 32bits, mais de toute façon, l'installation de MySQL bibliothèque est 64bits. Pour résoudre le problème, ici, vous pouvez l'installer manuellement avec les commandes suivantes:
Avec ARCHFLAGS="-arch i386", il doit être compilé comme pour l'architecture i386.
C'est un coup de feu dans l'obscurité - pas familier avec MACOSX - mais j'ai vu un problème similaire sous Linux et ne pouvait se résoudre par:
Ensuite, j'ai essayé d'import MySQLdb et le fait que j'ai eu une simple erreur que le colis n'est pas exisit - au moins je savais que MySQLdb a été de 100% supprimé
Puis j'ai une nouvelle installation via le gestionnaire de paquets si cette option existe, comme il sera 100% compatible avec votre plate-forme et les bibliothèques. La compilation etc. est grand, mais vous avez à faire beaucoup de travail de jambe pour vous assurer que vous avez le droit de MySQL client libs etc. lien vers (basé sur mon expérience douloureuse)
Bonne chance.
Pire des cas ... vous pouvez utiliser les alternatives PyMySQL pur python option (http://pypi.python.org/pypi/PyMySQL/0.2) mais je dois avouer que la plupart des gens recommandent MySQLdb
Il semble que ce problème est lié à la version de mysql que vous avez sur la boîte. Lors de la compilation du python mysql composant qu'il utilise mysql_config qui vit habituellement dans /usr/local/mysql/bin afin de déterminer quels indicateurs pour passer au CC lors de la compilation de mysql composant. Si vous avez une version 32 bits de mysql cours d'exécution puis vous obtiendrez un 32 version de ce composant, même si vous avez la version 64 bits de python. Comme un exemple, j'ai eu la suite de la version de mysql...
/usr/local/mysql 5.5.16-osx10.6-x86, et j'aurais été en cours d'exécution...
/usr/local/mysql 5.5.16-osx10.6-x86_64
De passer à la version 64 bits de mysql sur ma machine, puis en cours d'exécution...
sudo pip install mysql-python
résolu le problème pour moi. Vous pouvez exécuter la commande suivante pour vérifier la façon dont il va construire la base de composant...
/usr/local/mysql/bin/mysql_config --cflags
Vous devriez voir quelque chose comme ça...
-I/usr/local/mysql/include -Os -g -fno-commune -fno-strict-aliasing -arch x86_64
J'ai une autre solution possible à ajouter.
J'ai résolu le problème en ajoutant la ligne suivante à
.profile
(.bash_profile
est ok si c'est une machine de développement):(2e ligne pourrait ne pas être nécessaire, cependant. Mais après des heures à jouer du violon, en essayant, recompiler, je ne pouvais pas être dérangé en essayant par plus).
Ce problème a été résolu pour moi en cliquant sur la bonne version de python. Si vous avez installé avec macports:
J'ai rencontré le même problème.
Ma situation: Mac OSX 10.6, python est de 64 bits, mysql est en 32 bits, et _mysql.donc, est de 32 bits.
Solution: désinstaller mysql (http://steveno.wordpress.com/2009/03/26/uninstall-mysql-on-mac-os-x/), et installer le 64 bits mysql. Ensuite, assurez-vous que mysql_config est pointé à celui que vous venez d'installer.
IMPORTANT:
supprimer tous les _mysql.ainsi, dans le MySQL-python-1.2.3 répertoire (c'est ce que vous téléchargez) ou tout simplement supprimer l'ensemble du répertoire et de le générer à nouveau à partir du fichier tar. Ensuite, construire et installer à nouveau. Puis _mysql.il en sera de 64 bits. Maintenant, vous pouvez l'importer. Si vous voyez
dyld: Library not loaded
, puis à l'exportationDYLD_LIBRARY_PATH=/usr/local/mysql/lib
J'ai eu le même problème avec MySQLdb dans Mac OS X et Ubuntu, donc je suis passé à l'officiel de MysQL Python Connecteur: (disponible sur PyPI):
ou par téléchargement à partir de:
http://dev.mysql.com/downloads/connector/python/
De la Documentation:
http://dev.mysql.com/doc/refman/5.5/en/connector-python.html
Il est facile à utiliser et également compatible avec les PEP 249 (Python DB API de la version 2.0).
Remarque supplémentaire pour rendre le problème clairement:
Le message d'erreur est:
La mach-o, mais le mal de l'architecture erreur signifie que python et _mysql.donc ont différentes de l'architecture(32-bit/64-bit). On peut s'en assurer par:
Et si elles ne correspondent pas, nous devons les faire correspondre. Pour moi, mon _mysql.donc, est de 32 bits (il m'est arrivé d'installé la version 32 bits de mysql), et mon python2.7 fonctionne en 64 bits par défaut. Je force python fonctionne en 32 bits par:
Et le problème est résolu.
python 2.6+ peut fonctionner en 64 ou 32 bits mode, vérifiez Comment puis-je déterminer si mon python shell en cours d'exécution dans 32bit ou 64bit mode sur OS X?
J'ai eu le même problème avec mon ElCaptain Mac et résolu le problème en suivant cette autre post. Utilisez simplement le brassage et votre problème est résolu.