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

时间:2011-09-07 14:44:51

标签: python mysql macos installation

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

  • 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

我想我已经阅读了大部分关于这个主题的SO答案和谷歌搜索结果,想不出其他任何想法。任何建议都将不胜感激。

5 个答案:

答案 0 :(得分:11)

我认为在Mac 64位上执行此操作可能会有轻微的怪癖(如果你谷歌这个问题也出现了很多)。

我遇到过它,你可以做几件事:

覆盖环境

您可以更改DYLD_LIBRARY_PATH环境变量,该变量告诉链接器在哪里查找动态库(.so文件等)。你说你也下载了64位版本的MySQL,所以无论安装在哪里,都要改变你在这里看到的路径:

在shell中:

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

然后运行python并查看是否可以import MySQLdb

如果可行,您可以通过更改您的shell个人资料(.bash_profile,最有可能)来使其永久化。

使用自制软件

我真的不喜欢确保MySQL和Python以及所有正确的架构并单独安装它们。我运行homebrew,这是Mac的一种软件包管理器。如果你安装它,你可以很容易地解决这个问题:

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

请注意自制软件安装到/usr/local,因此您应该在/usr/local/binPATH之前将/usr/bin添加到/bin,否则您将真的很困惑为什么python不同。

您也可以将/usr/local/share/python添加到PATH,以使其永久化。

答案 1 :(得分:9)

在@birryree的评论的帮助下,我发现了问题。我可能会更好地遵循@birryree在他的回答中建议的程序,但我之前尝试过这个并且它有效:

根据建议,我做了:

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并再次安装它。但这样做我在安装此软件包时意识到我之前的错误。我第一次打字:

sudo ARCHFLAGS='-arch ix86_64' python setup.py build(以及之后的“安装”)

架构名称错误,应该是'-arch x86_64',没有“i”,所以它只是忽略了我的旗帜并安装了32位。

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

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

答案 2 :(得分:3)

非常重要!

如上所述,请确保您运行的是 64位版本的mysql。如果您从Snow Leopard升级,很容易忽略这个细节。 (我当然这样做了。)

如果您不确定在系统上删除旧版本的mysql,请参阅以下帖子:http://johnmcostaiii.net/2011/removing-mysql-osx-lion/

答案 3 :(得分:2)

我遇到了同样的问题,修复了64位问题之后,MySQLdb很头疼(它还抱怨libmysqlclient.18.dylib在哪里)。

我认为是时候切换到官方的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版)兼容。

答案 4 :(得分:1)

同时确保您也在运行Python 64-bit。我正在运行mysql 64位和Python 32位,因此得到了'但错误的架构'错误