在Mac OS X Lion上设置MySQLdb以支持Django时遇到问题
我觉得我的 MySQLdb 安装可能出了问题。在我刚安装的 OS X Lion 系统上,以下软件都安装得很好:
phpMyAdmin
MySQL 5.5.16
- 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 个回答
如果你还没有安装pip,先安装它,然后运行下面的命令:
pip install MySQL-Python
我找到了解决这个问题的方法。对我来说,这个方法有效。我在用PyCharm运行Python控制台时遇到了这个问题。
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
很简单,
你需要编辑你的 .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
这里详细解释了这个错误。