Python、Brew 和 MySQLdb

7 投票
1 回答
19961 浏览
提问于 2025-04-17 02:00

我一直是通过brew安装的python。然后我按照mysql_python的说明,用setup tools安装mysql_python这个包,它被安装到了/usr/local/lib/python2.7/site-packages/这个地方。依赖项也处理好了。

接着我去运行python控制台。我可以导入其他东西(比如说,导入django; 打印django.VERSION可以正常工作),但是当我导入MySQLdb时,就出现了以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.4-x86_64.egg/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.4-x86_64.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.4-x86_64.egg/_mysql.so
  Reason: image not found

有什么见解吗?非常感谢。

1 个回答

15

为了重现你的错误,我做了以下几步(我想,作为一个自制软件的爱好者,你也应该做过类似的事情)。

1) brew install python 安装 Python 2.7
2) brew install mysql 安装 mysql(这是各种驱动需要的)
3) 按照 homebrew 的建议配置 mysql
4) 下载了 mysql_python 并解压
5) 使用 python setup.py install 安装 mysql_python
6) 在交互式会话中测试 python,然后 import _mysql

在 Lion 系统上按照这些步骤操作后,我没有重现你的错误。现在……我们来调试你的问题。

有几个地方需要检查:
1) 在你的终端中输入 which python,它指向的是你的 homebrew 安装吗?
2) 请记住,使用 homebrew 时,site-packages 不会存储在 Cellar 中,而是存储在 /usr/local/lib/python2.7/site-packages。想了解更多原因,可以查看 这篇文章。我没有需要将 site-packages 的位置添加到我的 PATH 中,但你可以试试看。
3) 我最后能建议的就是,为了让 easy_install 能与 homebrew 的 python 一起工作,我需要将 /usr/local/share/python 添加到我的 PATH 中。

编辑
在重新阅读错误信息后,特别是向右滚动时,我注意到它无法加载 mysql 库。快速搜索一下这个库发现,在 OS X 上安装 mysql 时,可能会遇到链接问题。试着找到文件 libmysqlclient.18.dylib 并记下它的路径。在通过 homebrew 安装 mysql 后,我的路径是: /usr/local/Cellar/mysql/5.5.14/lib。我看到的常见解决办法是修复环境变量 DYLD_LIBRARY_PATH。想了解更多信息,可以查看 这个网站。以我的路径为例,我会在我的 .bash_profile 中添加这一行:

export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/Cellar/mysql/5.5.14/lib"

如果这对你没有用,我建议你仔细检查一下 mysql 是否安装正确或者是否有问题。抱着这个心态,希望能找到一些线索。

最后,如果你还没有任何 sql 数据库,我建议你卸载 mysql,然后通过 homebrew 重新安装。我现在用这个设置没有任何问题。

撰写回答