在Mac OS X Lion上设置MySQLdb以支持Django时遇到问题

2 投票
3 回答
3845 浏览
提问于 2025-04-17 03:24

我觉得我的 MySQLdb 安装可能出了问题。在我刚安装的 OS X Lion 系统上,以下软件都安装得很好:

  1. phpMyAdmin

  2. MySQL 5.5.16

  3. Django 1.3.1

但是当我在 Django 控制台里运行 "from django.db import connection" 时,却出现了以下错误:

从 django.db 导入 connection 时出错,错误追踪信息如下: 文件 "", 第 1 行,出错 文件 "/Library/Python/2.7/site-packages/Django-1.3.1-py2.7.egg/django/db/init.py", 第 78 行,出错 connection = connections[DEFAULT_DB_ALIAS] 文件 "/Library/Python/2.7/site-packages/Django-1.3.1-py2.7.egg/django/db/utils.py", 第 93 行,出错 backend = load_backend(db['ENGINE']) 文件 "/Library/Python/2.7/site-packages/Django-1.3.1-py2.7.egg/django/db/utils.py", 第 33 行,出错 return import_module('.base', backend_name) 文件 "/Library/Python/2.7/site-packages/Django-1.3.1-py2.7.egg/django/utils/importlib.py", 第 35 行,出错 import(name) 文件 "/Library/Python/2.7/site-packages/Django-1.3.1-py2.7.egg/django/db/backends/mysql/base.py", 第 14 行,出错 raise ImproperlyConfigured("加载 MySQLdb 模块时出错: %s" % e) ImproperlyConfigured: 加载 MySQLdb 模块时出错: dlopen(/Users/[我的用户名]/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so, 2): 找不到库: libmysqlclient.18.dylib 引用自: /Users/[我的用户名]/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so 原因: 找不到文件

我不知道为什么会出现这个问题,有人能帮我解决一下吗?

3 个回答

1

如果你还没有安装pip,先安装它,然后运行下面的命令:

pip install MySQL-Python

5

我找到了解决这个问题的方法。对我来说,这个方法有效。我在用PyCharm运行Python控制台时遇到了这个问题。

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

3

很简单,

你需要编辑你的 .bash_profile 文件(可以用命令 vi ~/.bash_profile 打开),在里面添加以下这一行:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib"

这行代码是基于你的 MySQL 安装目录在 /usr/local/mysql/ 这个假设的。

这样做可以解决在终端中通过 Python 解释器执行时的问题(.bash_profile 文件会导出 MySQLdb 模块需要的路径,以便加载 'libmysqlclient.18.dylib')。

如果你在使用像 PyCharm 这样的 Python 开发环境遇到这个问题,可以在启动模块的配置中添加 DYLD_LIBRARY_PATH 变量。

希望这能帮到你 :)

另外,

要想更全面地理解这个问题,可以阅读以下内容:

http://mysql-python.sourceforge.net/FAQ.html#importerror

这里详细解释了这个错误。

撰写回答