Django + MySQL + Virtualenv 问题与解决方案

90 阅读3分钟

在 Windows 7 操作系统上使用 Django、MySQL 和 Virtualenv 时,可能会遇到各种问题。例如,在尝试运行 django runserver 实用程序时,可能会出现以下错误消息:

Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.commands.runserver.Command object at 0x0000000003073908>>
Traceback (most recent call last):
  File "c:\mysite\mysite_env\lib\site-packages\django\core\management\commands\runserver.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 module named MySQLdb

这个问题可能是由于以下原因引起的:

  • MySQLdb 模块没有正确安装。
  • Virtualenv 没有继承系统的全局 Python 库。
  • MySQLdb 模块的路径没有正确添加到 Python 路径中。

2、解决方案

根据不同的问题原因,可以采用不同的解决方案:

  • 如果 MySQLdb 模块没有正确安装,可以使用 pip 命令安装它:
pip install MySQL-python
  • 如果 Virtualenv 没有继承系统的全局 Python 库,可以使用 --system-site-packages 标志重新创建 Virtualenv:
virtualenv --system-site-packages test
  • 如果 MySQLdb 模块的路径没有正确添加到 Python 路径中,可以在 Virtualenv 的 site-packages 目录中创建一个文件(例如 mysql.pth),其中包含 MySQLdb 模块的路径。

以下是在 Windows 7 操作系统上使用 Django、MySQL 和 Virtualenv 时可能遇到的其他问题以及相应的解决方案:

  • 问题: pip install MySQL-python 命令无法安装 MySQLdb 模块。

解决方案: 确保已经安装了 MySQL 客户端库。可以在 MySQL 官网上下载 MySQL 客户端库,然后使用以下命令安装它:

mysql_config --cflags --libs
  • 问题: 运行 django runserver 命令时,出现以下错误消息:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

解决方案: 升级 MySQL 客户端库到 1.3.13 或更高版本。

  • 问题: 运行 django runserver 命令时,出现以下错误消息:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

解决方案: 确保 MySQLdb 模块已正确安装。可以在 Virtualenv 的 site-packages 目录中检查 MySQLdb 模块是否存在。

  • 问题: 运行 django runserver 命令时,出现以下错误消息:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: Could not find MySQLdb in sys.path

解决方案: 确保 MySQLdb 模块的路径已正确添加到 Python 路径中。可以在 Virtualenv 的 site-packages 目录中创建一个文件(例如 mysql.pth),其中包含 MySQLdb 模块的路径。

  • 问题: 运行 django runserver 命令时,出现以下错误消息:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: (OperationalError) (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

解决方案: 确保 MySQL 数据库中的用户名和密码正确。可以在 MySQL 官网上找到 MySQL 数据库的用户名和密码。

  • 问题: 运行 django runserver 命令时,出现以下错误消息:
django.db.utils.OperationalError: (1049, "Unknown database 'mysite'")

解决方案: 确保 MySQL 数据库中存在名为 mysite 的数据库。可以在 MySQL 官网上找到有关如何创建 MySQL 数据库的说明。