Django+mySQL+virtualenv 的问题
在Windows上学习Django让我感到有些沮丧,因为每次我想继续往前走的时候,总是会遇到错误。
这是我的设置:
Windows 7
Python 2.7
安装了mySQL-python 1.2.3
安装了virtualenv
我在我的硬盘上创建了一个mysite文件夹。在命令提示符下,我切换到了这个文件夹,并创建了一个叫“mysite_env”的虚拟环境(没有额外的命令)。我激活了这个环境,并使用命令“pip install django”来安装Django。接着,我用django-admin.py开始了一个名为mysite的新项目。所以现在我的“mysite”文件夹里包含了“mysite”和“mysite_env”两个目录。
当我尝试使用django的runserver工具时,发生了这样的事情。
(mysite_env) c:\mysite\mysite>python manage.py runserver
Validating models...
Unhandled exception in thread started by <bound method Command.inner_run of <dja
ngo.contrib.staticfiles.management.commands.runserver.Command object at 0x000000
0003073908>>
Traceback (most recent call last):
File "c:\mysite\mysite_env\lib\site-packages\django\core\management\commands\r
unserver.py", line 88, in inner_run
self.validate(display_num_errors=True)
File "c:\mysite\mysite_env\lib\site-packages\django\core\management\base.py",
line 249, in validate
num_errors = get_validation_errors(s, app)
File "c:\mysite\mysite_env\lib\site-packages\django\core\management\validation
.py", line 28, in get_validation_errors
from django.db import models, connection
File "c:\mysite\mysite_env\lib\site-packages\django\db\__init__.py", line 78,
in <module>
connection = connections[DEFAULT_DB_ALIAS]
File "c:\mysite\mysite_env\lib\site-packages\django\db\utils.py", line 93, in
__getitem__
backend = load_backend(db['ENGINE'])
File "c:\mysite\mysite_env\lib\site-packages\django\db\utils.py", line 33, in
load_backend
return import_module('.base', backend_name)
File "c:\mysite\mysite_env\lib\site-packages\django\utils\importlib.py", line
35, in import_module
__import__(name)
File "c:\mysite\mysite_env\lib\site-packages\django\db\backends\mysql\base.py"
, line 14, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No mo
dule named MySQLdb
我在stackoverflow和网上搜索过,但找不到任何有效的解决办法。我希望我能真正开始编写代码,而不是一直被这些问题困扰。感觉用Mac来编写Python和Django代码要好得多。
6 个回答
在之前的回答基础上,如果你想用最近版本的virtualenv来继承系统的site-packages,可以使用下面的命令:
virtualenv --system-site-packages test
虚拟环境(Virtualenv)默认情况下不会继承你全局安装的Python库。
你可以重新创建一个虚拟环境,并包含系统的库,或者你可以安装mysql的Python模块。这个模块是用C语言写的,所以安装起来比大多数用pip安装的模块要复杂一些。
在虚拟环境中安装mysqldb时,你需要能够编译mysql模块,这就意味着你需要一些基本的编译工具、Python的头文件库和mysql客户端库(在ubuntu/debian系统中,这些工具分别是build-essential、python-dev和libmysqlclient16-dev)。在准备好这些之后,运行pip install MySQL-python应该就能成功安装,这样你就可以在django中使用mysql了。
不过在Windows系统下,事情就复杂了。你可以做的一件事是,在虚拟环境的site-packages目录下(lib/python2.7/site-packages)添加一个名为mysql.pth的文件(任何以.pth结尾的文件都可以),这个文件里只需要写一行,内容是mysql Python库的完整路径。这样做可以把这个目录添加到搜索路径中,django就能找到这些库了。
对于在32位的Windows 7上安装Python 2.7,首先要激活虚拟环境,然后在环境提示符下输入
easy_install mysql-python
我用pip安装不成功