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

Posted

技术标签:

【中文标题】mysql-python安装问题(在ma​​c os x lion上)【英文标题】:mysql-python installation problems (on mac os x lion) 【发布时间】:2011-11-12 05:54:18 【问题描述】:

我成功安装了所有东西,或者我是这么想的:

适用于 x86_64 的 mysql 5.5。 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 答案和 Google 结果,想不出其他可以尝试的方法。任何建议将不胜感激。

【问题讨论】:

你能做一个file /Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so吗? 是的,那就是:/Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so: Mach-O bundle i386,这怎么可能? 【参考方案1】:

我认为在 64 位 Mac 上执行此操作可能会有一些小问题(如果你用谷歌搜索,这个问题也会出现很多)。

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

覆盖环境

您可以更改DYLD_LIBRARY_PATH 环境变量,它告诉链接器在哪里寻找动态库(.so 文件等)。您说您还下载了 64 位版本的 MySQL,因此无论安装在哪里,都请更改您在此处看到的路径:

在外壳中:

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

请注意 homebrew 安装到 /usr/local,所以你应该在 PATH 之前添加 /usr/local/bin,在 /usr/bin/bin 之前,否则你会很困惑为什么 python 不同。

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

【讨论】:

为了让 64 位 python 与 64 位 MySQL 兼容,我花了一天的大部分时间来抓狂。自制似乎要容易得多。 @nflacco - 老实说,如果您在 Mac 上并尝试在系统上安装必须依赖其他库和软件的库,请首先尝试使用 Homebrew(或 MacPorts 或 Fink或者你有什么)去做。在使用它之前,我已经打了太多的依赖战。它仍然有粗糙的边缘,但仍然优于硬方式。【参考方案2】:

在@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

【讨论】:

很酷,你得到了它的工作。您可以为未来的读者接受您自己的答案。 :)【参考方案3】:

非常重要!

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

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

【讨论】:

这让我明白了。请注意,bitnami 的 MAMP 堆栈只有 32 位。【参考方案4】:

还要确保您也在运行Python 64-bit。我运行的是 64 位的 mysql 和 32 位的 Python,所以出现了“但架构错误”的错误

【讨论】:

我相信 OP 说他有 python "x86_64",又名 64 位。【参考方案5】:

我遇到了同样的问题,并且在修复 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)兼容。

【讨论】:

以上是关于mysql-python安装问题(在ma​​c os x lion上)的主要内容,如果未能解决你的问题,请参考以下文章

windows python MySQL-python安装过程

windows python MySQL-python安装过程

在windows下MySQL-python的安装

pip 并安装 mysql-python

Windows下mysql-python安装步骤及常见问题

关于windows x64安装MySQL-python失败解决