django.core.exceptions.ImproperlyConfigured:加载MySQLdb模块时出错:没有名为MySQLdb的模块

时间:2013-03-09 16:00:59

标签: python mysql database django

尝试连接到mysql数据库时遇到的问题。我还提供了我使用的数据库设置。

 Traceback (most recent call last):
 File "manage.py", line 10, in <module>
 execute_from_command_line(sys.argv)
 File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/home/arundhati/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/sql.py", line 9, in <module>
from django.db import models
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 27, in load_backend
return import_module('.base', backend_name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

数据库设置::

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ar_test_db',                      # Or path to database file if using 
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or   '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

非常感谢你的帮助!!

24 个答案:

答案 0 :(得分:126)

看起来您没有安装python mysql包,请尝试:

pip install mysql-python

或者如果不使用虚拟环境(在* nix主机上):

sudo pip install mysql-python

答案 1 :(得分:31)

你必须安装python-mysqldb - MySQL的Python接口

试试 sudo apt-get install python-mysqldb

答案 2 :(得分:11)

当我在Mac OS X Mountain Lion中使用python,mysql,sequel pro应用程序为PyCharm设置Django开发环境时,我得到的错误与此主题的所有者相同。 但是,我在Mac OS Mountain Lion x86_x64下运行python-mysqldb的答案(MySql和Python也应该是相同的架构)并且已经尝试过像pip等所有内容。为了解决这个问题,请执行以下步骤:

  1. here
  2. 下载MySql for Python
  3. 解压下载的文件。在终端窗口中执行以下操作:tar xvfz downloade.tar。
  4. cd / to untared directory
  5. 运行sudo python setup.py install
  6. 如果你得到类似这样的错误:“环境错误:找不到/ usr / local / bin / mysql_config”然后尝试添加路径屁股如下:“export PATH = $ PATH:/ usr / local / mysql / bin”中。但是id对我没有帮助,我找到了另一个解决方案。在命令执行错误输出结束时,如下所示:

    文件“/path_to_file/MySQL-python-1.2.4b4/setup_posix.py”,第25行,在mysql_config中 引发EnvironmentError(“%s not found”%(mysql_config.path,))

  7. 使用vim打开setup_posix.py并转到第25行(在您的情况下,它可以是不同的,除非它是相同的版本)。

  8. 编辑后第25行应如下所示,除非你的mysql有符号链接,如下面的'/ usr / local / mysql / bin /':

    f = popen("%s --%s" % ('/usr/local/mysql/bin/mysql_config', what))

  9. 之后我又收到了另一个错误:

    django.core.exceptions.ImproperlyConfigured:加载MySQLdb模块时出错:dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so ,2):未加载库:libmysqlclient.18.dylib 参考自:/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so 原因:未找到图像

  10. 最后我在控制台中进行了跟踪:

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

  11. 目前一切正常。所以我希望它会对使用Mac的人有所帮助。 :)

答案 3 :(得分:9)

我的答案类似于@ Ron-E,但我还有一些错误/更正,所以我在Mavericks和Python 2.7.6上为Mac OSX做了以下步骤。

  1. 安装Python mysql包(如果收到成功消息,则忽略以下步骤)

    pip install mysql-python
    
  2. 当我做了上述操作时,我收到了错误&#34; EnvironmentError:找不到mysql_config&#34;     enter image description here     为了解决这个问题,我在终端进行了以下操作:

    export PATH=$PATH:/usr/local/mysql/bin
    
  3. 当我重新开始第1步时,我收到一个新错误&#34;错误:命令&#39; cc&#39;退出状态1&#34; enter image description here     为了解决这个问题,我在终端进行了以下操作:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
    
  4. 我重新尝试了第1步并获得了成功信息&#39;成功安装了mysql-python&#39;!

答案 4 :(得分:6)

从Windows环境下载并安装Mysql-python。 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

答案 5 :(得分:6)

您缺少python mysqldb库。使用此命令(对于Debian / Ubuntu)来安装它: sudo apt-get install python-mysqldb

答案 6 :(得分:3)

这是因为未找到sql连接器。尝试:

pip install mysqlclient

答案 7 :(得分:3)

在Ubuntu上,建议使用分发存储库。

sudo apt-get install python-mysqldb

答案 8 :(得分:2)

这也发生在我身上,我相信这不仅对Django开发者而且对Flask也是一个常见的错误,所以我解决这个问题的方法是使用brew。

  1. brew install mysql
  2. sudo pip install mysql-python
  3. 这样每个问题都解决了,两个框架都可以正常工作。

    P.S。:对于那些使用macports的人(比如我自己),这可能是一个问题,因为brew工作在不同的层次,我的建议是使用brew而不是macports

    我希望我能提供帮助。

答案 9 :(得分:2)

对于Ubuntu 16.04和18.04或python 3版本

sudo apt-get install python3-mysqldb

答案 10 :(得分:1)

使用与Will相同的错误消息,我首先安装mysql,因为在安装过程中将添加丢失的文件。 所以

之后
brew install mysql

pip install mysql-python

运行没有错误。

答案 11 :(得分:0)

Source

安装(如果没有找到):

pip install mysql.connector

设置:

'default': {
    'ENGINE': 'mysql.connector.django',
    'NAME': '...',
    'HOST': '...',
    'PORT': '3306',
    'USER': '...',
    'PASSWORD': '...',
}

答案 12 :(得分:0)

我认为这是版本错误。

尝试按以下顺序安装:

  1. sudo apt-get install python3-mysqldb

  2. pip3 install mysqlclient

  3. python3 manage.py makemigrations

  4. python3 manage.py migrate

答案 13 :(得分:0)

尝试:

pip install mysqlclient

我建议在虚拟环境中使用它。

答案 14 :(得分:0)

我已经在以下环境中解决了此问题:

$ pyenv --version
pyenv 1.2.9

$ python --version
Python 3.7.2

$ python -m django --version
2.1.7

./ settings.py

DATABASES = {
    'default': {
        'NAME': 'my_db_name',
        'ENGINE': 'mysql.connector.django',   # 'django.db.backends.mysql'
        'USER': '<user>',
        'PASSWORD': '<pass>',
        'HOST': 'localhost',
        'PORT': 3306,
        'OPTIONS': {
            'autocommit': True,
        },
    }
}

如果使用'ENGINE': 'mysql.connector.django',请安装执行以下命令的驱动程序:

$ pip install mysql-connector-python
Successfully installed mysql-connector-python-8.0.15 protobuf-3.7.0 six-1.12.0

请注意,$ pip install mysql-python不适用于我。

请注意,如果使用'ENGINE': 'django.db.backends.mysql',则应安装执行以下命令的驱动程序:
$ pip install mysqlclient

最后执行:
$ python manage.py migrate

如果可以的话,python将创建所有这些表id数据库:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session

答案 15 :(得分:0)

如果您使用的是pyhton 3.4或更高版本。您必须安装

sudo apt-get install python3-dev libmysqlclient-dev 

在终端中。然后在您的虚拟环境或安装pip的位置安装pip install mysqlclient

答案 16 :(得分:0)

当我想使用 MySQL 作为默认数据库时,我遇到了类似的错误。
这些错误可能是因为 mysqlclient 尚未安装。
这可以从命令行使用;
pip install mysqlclient(适用于 Python 的最新版本)
pip install mysql-python(适用于旧版本的 python)
在我的情况下,在满足此要求后,我仍然出现同样的错误,并如下解决; 在你的django项目目录中,选择venv目录,在这些目录下,
选择 pyvenv.cfg 文件,然后在询问您是否要编辑此文件的对话框中单击允许。在这个文件中,
include-system-site-packages 设置为 false。所以把这行代码像这样改成true;

include-system-site-packages = true

现在一切正常

答案 17 :(得分:0)

我遇到了同样的问题。以下解决了我的问题

在您的shell中运行 pip install pymysql

然后,在项目原始目录中编辑init.py文件(与settings.py相同) 然后

添加:

导入pymysql

pymysql.install_as_MySQLdb()

这应该可以解决问题。

答案 18 :(得分:0)

面临类似的问题。我尝试使用pip安装mysql-python,但由于gcc依赖性错误而失败。

适合我的解决方案

conda install mysql-python

请注意我已经安装了anaconda,它没有gcc依赖。

答案 19 :(得分:0)

如果错误看起来像这样

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module:
dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: 
/usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so

然后尝试:

pip install python-mysqldb

答案 20 :(得分:0)

我浪费了很多时间。事实证明,Python 3不支持默认数据库库。You have to use a different one

答案 21 :(得分:0)

只是为了添加其他答案,如果您正在使用Django,建议您在安装Django之前安装mysql-python。

答案 22 :(得分:-2)

似乎您无权访问Python文件夹。尝试sudo chown -R $USER /Library/Python/2.7

答案 23 :(得分:-2)

也许您可以尝试以下操作模式:
sudo python manage.py runserver 0.0.0.0:8000