我最近升级到OSx Mountain Lion(10.8),不久后升级到10.8.1。我试图做一个“导入MySQLdb”并遇到以下错误:
>>> import MySQLdb
/Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.8-intel.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /Library/Python/2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.8-intel.egg/_mysql.pyc, but /Users/jlk/Software_Downloads/MySQL-python/MySQL-python-1.2.3 is being added to sys.path
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "MySQLdb/__init__.py", line 19, in <module>
import _mysql
File "build/bdist.macosx-10.8-intel/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.8-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/jlk/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.8-intel.egg-tmp/_mysql.so, 2): no suitable image found. Did find:
/Users/jlk/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.8-intel.egg-tmp/_mysql.so: mach-o, but wrong architecture
不确定错误或如何解决问题。我已经google了,但是我无法找到与此问题有关的osx 10.8.1的任何答案。它最后说它是“错误的架构”,但我知道我安装的是该模块的OSx版本。我看到的唯一区别是它表示10.8,但这是该模块的最新版本。
供参考:
操作系统:OSx Mountain Lion 10.8.1 Pyhon版本:2.7.2有什么想法吗?
此致
杰夫
答案 0 :(得分:2)
您正在使用的python解释器和_mysql.so可能是针对不同的体系结构集构建的,例如:一个是i386而另一个是32/64位胖。您可以通过运行file /path/to/your python interpreter
和file /path/to_mysql.so
并比较输出来检查。
你能重建MySQLdb并确保pip / easy_install使用正确的python解释器吗?此外,如果您还没有这样做,请升级您的Xcode版本及其命令行工具,以避免通常的构建错误。
编辑我可以使用Apple的股票Python 2.7.1在10.7上重现这一点。问题实际上是python解释器,MySQLdb和MySQL服务器之间的架构不匹配。 Python是32/64位胖版本,我安装的MySQL版本只有32位。 MySQLdb在构建时会查看MySQL的体系结构,所以我只得到一个32位_mysql.so。在python中导入可能以64位模式运行的模块时,会发生错误。
我认为安装和运行64位版本的MySQL以及重建MySQL-Python应该可以解决这个问题,或者你可以force Python to run in 32bit mode。