AJJ*_*AJJ 10 python mysql macos installation
我成功安装了所有东西,或者我认为:
但是当我尝试:
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 pythonbrew 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永久物品中.
在@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)