在OS X上使用Django中的MySQL时找不到libmysqlclient.18.dylib映像

Rob*_*son 18 python mysql django

我开始学习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
Run Code Online (Sandbox Code Playgroud)

我找到了很多解决方案,主要涉及我的DYLD_LIBRARY_PATH价值的明确定义,但这对我不起作用.MysQL-Python已安装(v1.2.3).

知道我可能需要做些什么才能完成这项工作?

谢谢.

UPDATE

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.
  }
}
Run Code Online (Sandbox Code Playgroud)

Ned*_*ily 37

根据您的评论,似乎libmysqlclientdylib安装了非绝对库名称路径.这与OS X上的标准做法相反,OS X在这方面与大多数其他Unix-y系统不同.您应该能够通过使用修改.so文件中的路径来永久修复问题(至少在下次升级之前),install_name_tool或者通过确保Django实例运行并定义了以下环境变量来使其工作:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib
Run Code Online (Sandbox Code Playgroud)

您也可以通过/usr/local/lib在dylib中创建符号链接来使其工作,/usr/local/mysql/lib因为/usr/local/lib在默认的动态加载搜索路径上,所以(未经测试!)类似于:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Run Code Online (Sandbox Code Playgroud)

一个更好的长期解决方案是不使用Python导入MySQLdb错误 - Mac 10.6中建议的破坏的MySQL客户端安装.

  • 适用于 - > sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib (2认同)