我开始学习Python/Django,并且遇到了我的第一个障碍。当尝试在settings.py
中设置我的数据库时,内部服务器失败,出现以下错误:
File "/Library/Python/2.7/site-packages/django/db/backends/mysql/base.py", line 16, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Users/rob/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/rob/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.7-intel.egg-tmp/_mysql.so
Reason: image not found
我已经找到了很多解决方案,大多数都涉及显式定义我的DYLD_LIBRARY_PATH
值,但这对我不起作用。已安装MysQL-Python
(v1.2.3)。
你知道我需要做些什么才能解决这个问题吗?
谢谢。
更新
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'django_tutorial', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
发布于 2012-03-29 02:20:48
从您的评论中可以看出,libmysqlclient
dylib是使用非绝对库名称路径安装的。这与OS上的标准实践相反,OS在这方面与大多数其他Unix-y系统不同。您应该能够通过使用install_name_tool
修改.so文件中的路径来永久修复该问题(至少在您的下一次升级之前),或者您可以通过确保您的Django实例运行时定义了以下环境变量来使其工作:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib
您还可以通过在/usr/local/lib
中创建到/usr/local/mysql/lib
中的dylib的符号链接来使其工作,因为/usr/local/lib
位于默认的动态加载搜索路径上,所以(未经测试!)类似于:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
更好的长期解决方案是不使用Python import MySQLdb error - Mac 10.6中建议的损坏的MySQL客户端安装。
发布于 2015-11-13 21:50:04
使用mysql
的homebrew安装,这对我很有效:
$ mdfind libmysqlclient
/usr/local/Cellar/mysql/5.7.9/lib/libmysqlclient.20.dylib
/usr/local/Cellar/mysql/5.7.9/lib/libmysqlclient.a
/usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib
/usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.a
/usr/local/Cellar/mysql/5.6.26/lib/libmysqlclient.18.dylib
/usr/local/Cellar/mysql/5.6.26/lib/libmysqlclient.a
$ sudo ln -s /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
发布于 2012-03-29 00:07:05
确保您不仅拥有MySql-Python,还拥有实际的MySql。MySQL-python正在尝试加载mysql库,其位置应该类似于/usr/local/mysql-VERSION/lib。
尝试运行
mdfind libmysqlclient
在命令行上。浏览一下这些结果,如果您没有看到缺少的文件(libmysqlclient.18.dylib),那么您可能没有正确安装mysql。
https://stackoverflow.com/questions/9911195
复制相似问题