1

我最近升级到了 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

不太确定出了什么问题或如何解决。我已经用谷歌搜索了,但无法找到与 osx 10.8.1 相关的任何答案。它最后说它是“错误的架构”,但我知道我安装的是模块的 OSx 版本。我看到的唯一区别是它说它适用于 10.8,但这是该模块的最新版本。

以供参考:

操作系统:OSx Mountain Lion 10.8.1 Pyhon 版本:2.7.2

有任何想法吗?

问候,

杰夫

4

1 回答 1

2

您正在使用的 python 解释器和 _mysql.so 很可能是为不同的架构集构建的,例如,一个是 i386,另一个是 32/64 位胖。您可以通过运行file /path/to/your python interpreterfile /path/to_mysql.so比较输出来检查。

你能重建 MySQLdb 并确保 pip / easy_install 使用正确的 python 解释器吗?此外,如果您还没有这样做,请升级您的 Xcode 版本及其命令行工具,以避免通常出现的构建错误。

编辑:我可以在 10.7 上用 Apple 的 Python 2.7.1 重现这个。问题实际上是 python 解释器、MySQLdb 和 MySQL 服务器之间的架构不匹配。Python 是 32/64 位胖版本,我安装的 MySQL 版本只有 32 位。MySQLdb在构建时看MySQL的架构,所以我得到了一个32位的_mysql.so。在可能以 64 位模式运行的 python 中导入模块时,会发生错误。

我认为安装和运行 64 位版本的 MySQL 和重建 MySQL-Python 应该可以解决这个问题,或者您可以强制 Python 在 32 位模式下运行

于 2012-09-08T09:06:41.280 回答