Django+mySQL+virtualenv 的问题

3 投票
6 回答
2525 浏览
提问于 2025-04-17 08:52

在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 个回答

1

在之前的回答基础上,如果你想用最近版本的virtualenv来继承系统的site-packages,可以使用下面的命令:

virtualenv --system-site-packages test
1

虚拟环境(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就能找到这些库了。

2

对于在32位的Windows 7上安装Python 2.7,首先要激活虚拟环境,然后在环境提示符下输入

easy_install mysql-python

我用pip安装不成功

撰写回答