Django manage.py syncdb 报错找不到 MySQLdb 模块
我刚开始学习Python和Django...
我正在使用这个教程,链接在这里。
我在运行Snow Leopard的MySQL 5中创建了一个mysite数据库。
我把settings.py文件修改成了这样:
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'mysite'
DATABASE_USER = 'root'
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''
现在当我运行以下命令时:
python manage.py syncdb
我收到了以下错误:
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/core/management/__init__.py", line 362,
in execute_manager
utility.execute()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/core/management/__init__.py", line 303,
in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/core/management/base.py", line 195, in
run_from_argv
self.execute(*args, **options.__dict__)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/core/management/base.py", line 221, in
execute
self.validate()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/core/management/base.py", line 249, in
validate
num_errors = get_validation_errors(s, app)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/core/management/validation.py", line
22, in get_validation_errors
from django.db import models, connection
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/db/__init__.py", line 41, in <module>
backend = load_backend(settings.DATABASE_ENGINE)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
/django/db/__init__.py", line 17, in load_backend
return import_module('.base', 'django.db.backends.%s' %backend_name)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages /django/db/backends/mysql/base.py", line 13, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb
module: No module named MySQLdb
我可能哪里做错了呢?
祝编程愉快...
5 个回答
值得一提的是,即使现在说也不算晚,下面这个“配置错误”(ImproperlyConfigured)的问题
文件 "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/backends/mysql/base.py",第 13 行,
抛出 ImproperlyConfigured("加载 MySQLdb 模块时出错: %s" % e) django.core.exceptions.ImproperlyConfigured: 加载 MySQLdb 模块时出错: 没有名为 MySQLdb 的模块
在某些情况下,如果 MySQL 没有运行,这个错误可能会让人误解。我自己刚刚在网上搜索这个错误,想知道为什么一个配置错误会“突然”出现。在搜索和尝试的过程中,我运行了其他的 manage.py 命令,得到了一个类似但更有帮助的错误信息:
文件 "~/.virtualenvs/mdid3/lib/python2.7/site-packages/MySQLdb/connections.py",第 187 行,在 init
super(Connection, self).init(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, "无法连接到 MySQL 服务器,地址为 '127.0.0.1' (61)")
检查 mysqld 后发现它没有运行,启动它后——我的配置错误神奇地解决了!
sudo easy_install mysql-python
这段话是说,它会安装一个叫MySQLdb的模块,这样你就可以用Python来操作MySQL数据库。如果你想使用虚拟环境(virtualenv),那是个不错的选择。
sudo easy_install virtualenv virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export PIP_VIRTUALENV_BASE=$WORKON_HOME
source /usr/local/bin/virtualenvwrapper_bashrc
mkvirtualenv mysite
pip install mysql-python django
接下来,它会把你放进一个虚拟环境里,这个环境里已经安装了django(你可以指定版本,比如django==1.1.1),还有MySQLdb模块。使用虚拟环境的好处是,你可以为不同的项目创建独立的环境,这样就可以为每个项目安装不同的模块,甚至使用不同版本的这些模块(或者Python)。如果你想退出虚拟环境,只需要输入一个命令。
deactivate
或者,如果你想切换到名为'foo'的环境,输入这个命令。
workon foo
如果你打算使用虚拟环境,建议你在你的~/.bash_profile文件(在OS X上)或者~/.bashrc文件(一般在Linux上)中添加这三行代码。
export WORKON_HOME=$HOME/.virtualenvs # where virtualenvs should be created
export PIP_VIRTUALENV_BASE=$WORKON_HOME # tells pip where to look for virtualenvs
source /usr/local/bin/virtualenvwrapper_bashrc # bash completion and wrapper functions for virtualenv