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

AJJ*_*AJJ 10 python mysql macos installation

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

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

但是当我尝试:

import MySQLdb
Run Code Online (Sandbox Code Playgroud)

我明白了:

    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
Run Code Online (Sandbox Code Playgroud)

我还能错过什么?

我的系统当然也是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
Run Code Online (Sandbox Code Playgroud)

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

wkl*_*wkl 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/bin到您的PATH,超前的/usr/bin/bin,否则你会得到真正的困惑,为什么python是不同的.

您也可以添加/usr/local/share/python到您的PATH永久物品中.


AJJ*_*AJJ 9

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

正如所建议的,我做了:

file /Users/aj/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-ix86_64.egg-tmp/_mysql.so
Run Code Online (Sandbox Code Playgroud)

得到:[...]: 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
Run Code Online (Sandbox Code Playgroud)

而且file $(which mysql):

/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
Run Code Online (Sandbox Code Playgroud)

所以我卸载了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
Run Code Online (Sandbox Code Playgroud)