django.core.exceptions.ImproperlyConfigured: 加载MySQLdb模块时出错
我正在跟着Django的教程,很多人都问过这个问题,但我觉得我的情况有点特别,因为在安装了python-mysql之后,当我尝试运行python manage.py syncdb时,还是出现了错误。
我在一个虚拟环境中,因为我用macports来管理我的Python安装,所以我创建了我的虚拟环境。
virtualenv code/vdjango --no-site-packages --python=/opt/local/bin/python
在这之前,我使用macports安装了Django py27-django
,但在创建虚拟环境后,我觉得在虚拟环境中安装Django会更好,所以我用了pip install django==1.5
来安装。
根据Django的教程,我编辑了settings.py文件,然后执行了python manage.py syncdb,结果出现了以下错误:
[~/code/vdjango/newsite]$python manage.py syncdb
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/core/management/sql.py", line 9, in <module>
from django.db import models
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/db/utils.py", line 27, in load_backend
return import_module('.base', backend_name)
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Users/mac-pro/code/vdjango/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/mac-pro/code/vdjango/lib/python2.7/site-packages/_mysql.so
Reason: image not found
为了确认我已经安装了python-mysql这个包,我又运行了一次pip install。
(vdjango)mac-pro@localhost:[~/code/vdjango/newsite]$pip install python-mysqldb
Downloading/unpacking python-mysqldb
Could not find any downloads that satisfy the requirement python-mysqldb
No distributions at all found for python-mysqldb
Storing complete log in /Users/mac-pro/.pip/pip.log
那么这里发生了什么呢?看起来我有继续进行教程所需的一切,但不知为何,Python/Django却在抱怨没有mysqldb。
1 个回答
18
我的libmysqlclient.18.dylib文件在/usr/local/mysql/lib/这个地方,但是我的系统却在/usr/lib/里找它。最后我在/usr/lib/里创建了一个libmysqlclient.18.dylib的符号链接,这样问题就解决了。
1.) 确保libmysqlclient.18.dylib文件在/usr/local/mysql/lib/里。
打开你的命令行工具。
sudo -s
ls /usr/local/mysql/lib/ | grep libmysqlclient.18.dylib
你应该能看到这个文件:
libmysqlclient.18.dylib
如果看不到,试着在你的系统里搜索一下这个文件的位置:
find / -name libmysqlclient.18.dylib
2.) 在/usr/lib里创建libmysqlclient.18.dylib的符号链接
在命令行里输入以下命令:
ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
如果你的libmysqlclient.18.dylib文件不在/usr/local/mysql/lib里,记得把第一个路径换成libmysqlclient.18.dylib的正确路径。
希望这能帮到你。