djang中出现“No module name mysqldb”错误

2024-06-01 02:01:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用mysql数据库引擎在ubantu14.04上安装了django1.7(python2.7.6),但是运行命令-

python manage.py migrate

我正处于错误之下

(env1)shiv@shiv-Calpella:~/Project/Poll_app/mysite$ python manage.py migrate
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
    utility.execute()
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
    django.setup()
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/contrib/auth/models.py", line 40, in <module>
    class Permission(models.Model):
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/db/models/base.py", line 122, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/db/models/base.py", line 297, in add_to_class
    value.contribute_to_class(cls, name)
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/db/models/options.py", line 166, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/db/utils.py", line 242, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/db/utils.py", line 108, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/shiv/Envs/env1/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 18, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

我试过用命令安装mysqldb

pip install MySQL-python

那我就要低于错误了

^{pr2}$

我的设置.py文件是

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'poll_db',                     
        'USER': 'root',
        'PASSWORD': 'root',
    }
}

Tags: djangoinpyhomedblibpackageslocal
2条回答

您有两个选项,如下所述:

分发包为-:

sudo apt-get install python-mysqldb

在这种情况下,您不能使用virtualenv no site packages(默认选项),但必须使用:

virtualenv system-site-packages myenv

使用clean virtualenv并构建自己的pythonmysql包。在

首先创建virtualenv:

virtualenv myvirtualenv

source myvirtualenv/bin/activate

然后安装生成依赖项:

sudo apt-get build-dep python-mysqldb

现在可以安装python mysql了

pip install mysql-python

注意Ubuntu包是python mysqldb,python pypi包是python mysql(不带db)

在上面的例子中,答案可能在正确的日志文件pip.log/tmp/pip-build-rHe_Sb/MySQL-python中的某个地方。在

1)使用PIP安装MySQL模块时,请确保您在系统中安装了mysql-devel(yum)或libmysqlclient-dev(apt get)包。在

2)顺便说一句,我建议使用mysqlclient$ pip install mysqlclient),而不是{},因为它同时支持python2和3.x

相关问题 更多 >