在 Mac OS 10.6.6 中使用 python-mysql 配置 django 时出错
Posted
技术标签:
【中文标题】在 Mac OS 10.6.6 中使用 python-mysql 配置 django 时出错【英文标题】:Error configuring django with python-mysql in Mac OS 10.6.6 【发布时间】:2011-07-08 14:27:09 【问题描述】:我的设置:
Mac OS 10.6.6 - x86_64 mysql 5.5.8 Python 2.7.1 Django 1.2.5 通过easy_install安装mysql-python我的情况:
我一直在努力让我的设置正常工作。问题出在 mysql-python 接口上。最初,我遇到了一个类似的问题(与我在 Django 中遇到的问题)在 python 中执行导入语句:
import MySQLdb
但我读了这个question/solution,证明它成功修复了它。 我安装了 django,它运行良好,但 mysql 接口有问题。 当我启动终端并输入时:
>> python manage.py dbshell
产生以下错误:
Traceback(最近一次调用最后一次): 文件“manage.py”,第 11 行,在 执行管理器(设置) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py”,第 438 行,在 execute_manager 实用程序.execute() 执行中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py”,第 379 行 self.fetch_command(子命令).run_from_argv(self.argv) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py”,第 261 行,在 fetch_command klass = load_command_class(app_name, subcommand) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/init.py”,第 67 行,在 load_command_class module = import_module('%s.management.commands.%s' % (app_name, name)) import_module 中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py”,第 35 行 进口(名称) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/dbshell.py”,第 4 行,在 从 django.db 导入连接,DEFAULT_DB_ALIAS 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/init.py”,第 77 行,在 连接 = 连接[DEFAULT_DB_ALIAS] getitem 中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py”,第 92 行 后端 = load_backend(db['ENGINE']) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/utils.py”,第 33 行,在 load_backend return import_module('.base', backend_name) import_module 中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/importlib.py”,第 35 行 进口(名称) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/mysql/base.py”,第 14 行,在 raise ImproperlyConfigured("加载 MySQLdb 模块时出错:%s" % e) django.core.exceptions.ImproperlyConfigured:加载 MySQLdb 模块时出错:dlopen(/Users/adogc45/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so, 2 ):库未加载:libmysqlclient.16.dylib 引用自:/Users/adogc45/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp/_mysql.so 原因:找不到图片
现在,我不明白为什么在 Python 中导入模块不会引发错误,但在 django 中使用 mysql 接口会引发错误。
顺便说一句,我的 settings.py 看起来像这样:
DATABASES =
'default':
'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
另外,图像实际上存在于 .../MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg-tmp
所以,我不知道发生了什么。
【问题讨论】:
感谢 Peter 和 elithrar 指出我遗漏的两件事(请参阅下面的答案)。这些解决了我的问题。 【参考方案1】:导出 DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
或:
pip install MySQL-python
pip install --upgrade MySQL-python
在虚拟环境中帮助我
【讨论】:
【参考方案2】:我有一个类似的问题,我通过在我的 .bash_profile 文件(我的 ~ 目录中运行 shell 的魔法文件)中包含这一行来解决开发程序: 导出 DYLD_LIBRARY_PATH=/usr/local/mysql/lib/ 有问题的 libmysqlclient.16.dylib 位于该目录中。
但是,当我尝试在 Apache 中将其作为 python wsgi 模块运行时,无论我做什么,Apache 都找不到 libmysqlclient.16.dylib。我努力了 sys.path.append('/usr/local/mysql/lib') os.environ['DYLD_LIBRARY_PATH'] = '/usr/local/mysql/lib' 没有运气... 似乎 Apache 没有读取这个环境变量,python 在这个上下文中也没有(它没有读取我的 .bash_profile 文件)......帮助!!!
【讨论】:
嗨,谢谢,我也必须在我的 .bash_profile 中导出该路径!【参考方案3】:试试:
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql',
而不仅仅是mysql
,如果您运行的是 Django 1.2.5。
【讨论】:
我还建议安装pip 而不是easy_install,因为它更可靠。 您好,谢谢!我将“mysql”更改为“django.db.backends.mysql”以使其正常工作。以上是关于在 Mac OS 10.6.6 中使用 python-mysql 配置 django 时出错的主要内容,如果未能解决你的问题,请参考以下文章
设置:OS X 10.6.6 + XCode3.2 使用 python 和 cocoa
Python 2.7.9 Mac OS 10.10.3 消息“setCanCycle:已弃用。请改用 setCollectionBehavior”
MAC中文版 Final Cut Pro X(FCPX) V10.6.6 专属视频剪辑后期工具安装教程