【问题标题】:Django manage.py syncdb throwing No module named MySQLdbDjango manage.py syncdb throwing No module named MySQLdb
【发布时间】:2010-12-17 08:10:09
【问题描述】:

我是一个学习 Python/Django 的新手...

我正在使用位于here 的以下教程。

在 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

我可能做错了什么?

编程愉快...

【问题讨论】:

    标签: python mysql django macos osx-snow-leopard


    【解决方案1】:
    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 的 virtualenv 中(您可以指定哪个版本,例如 django==1.1.1)和安装的 MySQLdb 模块。使用 virtualenv 将允许您为不同的项目拥有不同的环境,这样您就可以安装不同的模块,甚至可以为不同的项目使用这些模块(或 Python)的不同版本。离开你 virtualenv 只需输入命令

    deactivate
    

    或者,切换到环境'foo'类型

    workon foo
    

    如果您要使用 virtualenv,您还应该将这三行添加到您的 ~/.bash_profile(在 OS X 上,通常在 Linux 上是 ~/.bashrc):

    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
    

    【讨论】:

      【解决方案2】:

      问题是您缺少与 MySQL 接口的 Python 模块。

      查看get your database running 的Django 文档,它进一步指向MySQL notes。

      但是,如果您只是学习本教程,则使用 Python 内置的 SQLite 后端要容易得多。无需驱动程序、服务器等。

      【讨论】:

        【解决方案3】:

        值得指出(即使在这么晚的日期)下面的“配置不当”错误

        文件“/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages /django/db/backends/mysql/base.py”,第 13 行,在
        raise 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 年,“无法连接到 '127.0.0.1' (61) 上的 MySQL 服务器”)

        检查mysqld后,发现它没有运行并启动它——我的配置错误奇迹般地修复了!

        【讨论】:

          【解决方案4】:

          如果你正在使用,试试这个

          linux:- sudo apt-get install python-mysqldb

          windows:- pip install python-mysqldb 或 easy_install python-mysqldb

          希望这应该可行

          【讨论】:

            【解决方案5】:

            确保创建数据库并在 MySQL 服务器运行的情况下尝试连接到数据库以检查数据库名称、用户名和密码是否正确。然后运行:

            1) pip install mysqlclient

            2) python manage.py migrate

            【讨论】:

              猜你喜欢
              • 2020-04-20
              • 1970-01-01
              • 1970-01-01
              • 2017-09-11
              • 2018-11-05
              • 1970-01-01
              • 2019-10-08
              • 2020-03-13
              • 2011-08-16
              相关资源
              最近更新 更多