mysql-python安装问题(在mac 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/bin
到PATH
,否则你会很困惑为什么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位,所以得到了'但错误的体系结构'的错误