【问题标题】:Error importing MySQLdb导入 MySQLdb 时出错
【发布时间】:2012-02-05 13:58:48
【问题描述】:

我一直在尝试让 MySQLdb 正常工作。我目前收到此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.macosx-10.7-intel/egg/MySQLdb/__init__.py", line 19, in <module>
  File "build/bdist.macosx-10.7-intel/egg/_mysql.py", line 7, in <module>
  File "build/bdist.macosx-10.7-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/username/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so, 2): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib
  Referenced from: /Users/username/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so
  Reason: image not found

有人知道我需要做什么来纠正这些错误吗?

【问题讨论】:

  • 你确定你的电脑上安装了mysql吗?
  • 我有 MAMP,我可以毫无问题地使用 myPHPadmin 创建数据库。我可以毫无问题地使用 Mysql 工作台。

标签: python python-import


【解决方案1】:

看起来 MySQLdb 为错误的架构编译了自己。我正在运行 OSX Lion x86_64,我必须这样做:

$ file $(which python) # so I can check my python is 64 bit

和 64 位 MySQL

$ file $(which mysqld) # so I can check my MySQL is 64 bit too

您可以验证您当前 MySQLdb 的架构是 32 位的:

$ file /Users/username/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so

然后我可以让 MySQLdb 工作的唯一方法是下载源代码,然后用

$ ARCHFLAGS='-arch x86_64' python setup.py install

这会强制 setup.py 构建 64 位库 (_mysql.so) 而不是 32 位。 (提示 - 我发现 this 这个问题很有帮助。

HTH,丹

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 2011-08-08
    • 2012-07-11
    • 2015-02-08
    • 2014-09-18
    • 2023-03-25
    • 2011-06-11
    • 2016-06-08
    相关资源
    最近更新 更多