mysql-python安装问题(在ma​​c os x lion上)

我安装了所有东西,或者我想:

  • MySQL 5.5 for x86_64。
  • Python 2.7,x86_64。
  • mysql-python 1.2.3,x86_64。

但是当我尝试:

import MySQLdb 

我得到:

  ImportError: dlopen(/Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so, 2): no suitable image found. Did find: /Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so: mach-o, but wrong architecture 

还有什么我可以错过?

我的系统当然是64位版本, uname -a给出:

 Darwin ajmacbook.local 11.1.0 Darwin Kernel Version 11.1.0: Tue Jul 26 16:07:11 PDT 2011; root:xnu-1699.22.81~1/RELEASE_X86_64 x86_64 

我想我已经阅读了大部分的答案和谷歌在这个问题上的结果,想不出别的办法。 任何build议,将不胜感激。

我认为在Mac 64位上可能会出现一些小问题(如果你是谷歌,这个问题也会出现很多)。

我碰到了,有几件事你可以做:

覆盖环境

您可以更改DYLD_LIBRARY_PATH环境variables,该variables告诉链接程序在哪里查找dynamic库(.so文件等)。 你说你还下载了64位版本的MySQL,所以在安装它的地方,改变你在这里看到的path:

在一个shell中:

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

然后运行python ,看看你是否可以import MySQLdb

如果这样做,你可以通过改变你的shellconfiguration文件( .bash_profile ,很可能)来使其成为永久的。

使用自制软件

我真的不喜欢搞清楚MySQL和Python以及所有正确的体系结构并分别安装它们。 我运行homebrew ,这是一种Mac的软件包pipe理器。 如果你安装了,你可以很容易地处理这个问题:

  • brew install python
  • brew install mysql
  • /usr/local/share/python/easy_install mysql-python

请注意,自制程序安装到/usr/local ,所以你应该在/usr/bin/bin之前添加/usr/local/binPATH ,否则你会很困惑为什么python是不同的。

您也可以将/usr/local/share/python到您的PATH中,使其成为永久的。

在@birryree的评论的帮助下,我发现了这个问题。 我可能会更好地遵循@birryree在他的答案中提出的程序,但是我之前尝试过,它的工作原理:

正如所build议的,我做到了:

 file /Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so 

得到: [...]: Mach-O bundle i386所以,错误的架构。 从那里我做了相同的MySQL和Python只是为了确保: file $(which python)给:

 /Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 2 architectures /Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386): Mach-O executable i386 /Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64 

file $(which mysql)

 /usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64 

所以我卸载了mysql-python软件包: sudo pip uninstall mysql-python并重新安装。 但是这样做,我意识到我安装这个软件包时以前的错误。 我第一次input:

sudo ARCHFLAGS='-arch ix86_64' python setup.py build (and“install” sudo ARCHFLAGS='-arch ix86_64' python setup.py build

架构名称是错误的,应该是'-arch x86_64',不是'我',所以它只是忽略我的国旗,并安装了32位。

正确的命令安装下载的64位(从源文件夹)的mysql-python包:

 sudo ARCHFLAGS='-arch x86_64' python setup.py build sudo ARCHFLAGS='-arch x86_64' python setup.py install 

很重要!

如上所述,请确保您运行的是64位版本的mysql。 如果你已经从雪豹升级,很容易忽略这个细节。 (我当然是)。

如果你不确定在你的系统上删除旧版本的mysql,请参考这篇文章: http : //johnmcostaiii.net/2011/removing-mysql-osx-lion/

我有同样的问题,并修复64位问题(这也是抱怨libmysqlclient.18.dylib在哪里)与MySQLdb很多头痛。

我认为是时候切换到官方的Mysql Python连接器了?

 sudo pip install mysql-connector-python 

或者从http://dev.mysql.com/downloads/connector/python/下载它;

文档: http : //dev.mysql.com/doc/refman/5.5/en/connector-python.htm

它易于使用,并且与PEP 249(Python DB API版本2.0)兼容。

还要确保你也运行Python 64位 。 我运行mysql 64位和Python 32位,所以得到了'但错误的体系结构'的错误