【问题标题】:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdbdjango.core.exceptions.ImproperlyConfigured:加载 MySQLdb 模块时出错:没有名为 MySQLdb 的模块
【发布时间】:2013-02-25 02:29:01
【问题描述】:

我在尝试连接到 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.
    }
}

非常感谢您的帮助!!

【问题讨论】:

    标签: python mysql database django


    【解决方案1】:

    如果您使用的是 Python 3.4 或更高版本,则必须安装

    sudo apt-get install python3-dev libmysqlclient-dev 
    

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

    【讨论】:

      【解决方案2】:

      试试这个,只需使用 pip: 在 Windows 上,推荐的命令是:

      python -m pip install mysqlclient
      

      在虚拟环境中使用它

      【讨论】:

      • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
      • 欢迎来到 Stack Overflow。请收下tour,阅读How to Answer,避免发布重复答案。
      【解决方案3】:

      当我想使用 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
      

      现在一切正常

      【讨论】:

        【解决方案4】:

        Source

        安装(如果未找到):

        pip install mysql.connector
        

        设置:

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

        【讨论】:

          【解决方案5】:

          我认为是版本错误。

          尝试按以下顺序安装:

          1. sudo apt-get install python3-mysqldb

          2. pip3 install mysqlclient

          3. python3 manage.py makemigrations

          4. python3 manage.py migrate

          【讨论】:

            【解决方案6】:

            尝试:

            pip install mysqlclient
            

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

            【讨论】:

              【解决方案7】:

              我在这种环境中解决了这个问题:

              $ 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
              

              【讨论】:

              • django.core.exceptions.ImproperlyConfigured: 'django.db.backends.django' 不是可用的数据库后端。尝试使用“django.db.backends.XXX”,其中 XXX 是以下之一:“mysql”、“oracle”、“postgresql”、“sqlite3” 我使用“ENGINE”:“mysql.connector.django”和 pip3 install mysql -connector-python 还是不行
              【解决方案8】:

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

              在你的 shell 中运行 pip install pymysql

              然后,编辑你的项目源目录下的init.py文件(同settings.py) 然后

              添加:

              导入 pymysql

              pymysql.install_as_MySQLdb()

              这应该可以解决问题。

              【讨论】:

              • “然后,在你的项目源目录中编辑 init.py 文件” - 你的意思是 __init__.py 吗?
              【解决方案9】:

              适用于 Ubuntu 16.04 和 18.04 或 python 3 版本

              sudo apt-get install python3-mysqldb
              

              【讨论】:

                【解决方案10】:

                是因为没有找到sql连接器。试试:

                pip install mysqlclient
                

                【讨论】:

                  【解决方案11】:

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

                  对我有用的解决方案

                  conda install mysql-python
                  

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

                  【讨论】:

                  • 你能详细说明一下吗
                  【解决方案12】:

                  或许你可以试试下面的操作方式:
                  sudo python manage.py runserver 0.0.0.0:8000

                  【讨论】:

                    【解决方案13】:

                    这也发生在我身上,我相信这已经成为一个常见错误,不仅对于 Django 开发人员,对于 Flask 也是如此,所以我解决这个问题的方法是使用 brew。

                    1. brew install mysql
                    2. sudo pip install mysql-python

                    这样每个问题都解决了,两个框架都可以正常工作。

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

                    我希望我能有所帮助。

                    【讨论】:

                      【解决方案14】:

                      如果错误看起来像这样

                      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
                      

                      【讨论】:

                        【解决方案15】:

                        我在这上面浪费了很多时间。原来 Python 3 不支持默认数据库库。You have to use a different one

                        【讨论】:

                          【解决方案16】:

                          如果您在尝试使用 pip 安装 mysqlclient 时遇到错误,您可能缺少 mysql dev 库。通过运行安装它:

                          apt-get install libmysqlclient-dev
                          

                          然后再次尝试安装mysqlclient:

                          pip install mysqlclient
                          

                          【讨论】:

                          • 它是pip install mysqlclient。我忘记将它添加到我的 requirements.txt 文件中,所以即使 MySQL 数据库在那里并已填充,我的 Django Web 服务器也无法与之交互。
                          • 感谢这个答案拯救了我的一天我一直在尝试让 mysql 与 django 一起工作 2 天:)
                          【解决方案17】:

                          由于与 Will 相同的错误消息,我首先安装 mysql 是有效的,因为丢失的文件将在安装过程中添加。 所以之后

                          brew install mysql
                          
                          pip install mysql-python
                          

                          运行没有错误。

                          【讨论】:

                          • Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-build-jwQcm5/mysql- python/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n ');f.close();exec(compile(code, file, 'exec'))" install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record /install-record.txt --single-version-externally-managed --compile" 失败,错误代码 1 在 /private/var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-build-jwQcm5/mysql-python/跨度>
                          【解决方案18】:

                          我的回答与@Ron-E 类似,但我得到了更多错误/更正,因此我将以下步骤用于 Mac OSX on Mavericks 和 Python 2.7.6。

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

                            pip install mysql-python
                            
                          2. 当我执行上述操作时,我收到错误“EnvironmentError: mysql_config not found” 为了解决这个问题,我在终端中执行了以下操作:

                            export PATH=$PATH:/usr/local/mysql/bin
                            
                          3. 当我重新运行第 1 步时,我收到一个新错误“错误:命令 'cc' failed with exit status 1” 为了解决这个问题,我在终端中执行了以下操作:

                             export CFLAGS=-Qunused-arguments
                             export CPPFLAGS=-Qunused-arguments
                            
                          4. 我重新运行第 1 步并收到成功消息“成功安装 mysql-python”!

                          【讨论】:

                          • 感谢您的建议。我首先遇到了你的问题。
                          • 我按照您的方式进行操作,但在我的情况下总是出现第一个错误。对于 ` export CFLAGS=-Qunused-arguments ` 终端给出了那个错误:-bash: export: =-Qunused-arguments': not a valid identifier
                          • 经过数小时的尝试后,这对我有用——不知道为什么这不是投票率最高的答案。另一件事是确保您使用的是正确版本的 MySQL
                          【解决方案19】:

                          从这里下载并安装适用于 windows 环境的 Mysql-python。 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

                          【讨论】:

                          • 我用这个,我的机器不安装mysql
                          【解决方案20】:

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

                          【讨论】:

                          • 这是一个答案,但我认为如果您可以添加比单行更多的细节,那就太好了。谢谢!
                          • 以上命令帮助我们将Python接口安装到MySQL数据库中。
                          【解决方案21】:

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

                          sudo apt-get install python-mysqldb
                          

                          【讨论】:

                            【解决方案22】:

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

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

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

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

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

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

                            8. 在此之后,我收到另一个错误,如下所示:

                              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 原因:找不到图片

                            9. 最后我在控制台中做了以下操作:

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

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

                            【讨论】:

                            • 非常感谢。我花了将近一周的时间才使用 mysql 运行我的第一个项目哈哈。呼……
                            • 非常感谢!你救了我的一天!我正在使用 mac 并遇到同样的问题。
                            【解决方案23】:

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

                            【讨论】:

                              【解决方案24】:

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

                              试试
                              sudo apt-get install python-mysqldb

                              【讨论】:

                                【解决方案25】:

                                你好像没有安装python mysql包,试试:

                                pip install mysql-python
                                

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

                                sudo pip install mysql-python
                                

                                【讨论】:

                                • 您使用的是虚拟环境吗?我建议你这样做只是为了让事情井井有条。如果这不是一个选项,那么您需要以超级用户权限运行 pip:sudo pip install mysql-python
                                • 我正在使用虚拟环境,并且我已经安装了 mysql、django...但是当我执行 python manage.py syncdb 它给了我与我发布的相同的错误
                                • 我有没有版本问题?我正在使用 django 1.5,python 2.7.3 和我的 sql(14.14 for debian)
                                • 用python 3是:pip install mysqlclient
                                • 这在 python3 中不起作用。需要在 python3 中不可用的 ConfigParser
                                猜你喜欢
                                • 2017-04-22
                                • 2015-08-22
                                • 2017-01-27
                                • 2014-11-12
                                • 2013-03-13
                                • 2012-09-28
                                • 2014-12-21
                                • 1970-01-01
                                • 2020-10-08
                                相关资源
                                最近更新 更多