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


94

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

非常感谢您的帮助 !!

Answers:


136

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

pip install mysql-python

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

sudo pip install mysql-python

您正在使用虚拟环境吗?我建议您只是为了使事情井井有条。如果这不是一个选择,那么您将需要使用超级用户特权运行pip:sudo pip install mysql-python
Ron E

2
我正在使用虚拟环境,并且已经安装了mysql,django ...但是,当我执行python manage.py syncdb时,它给了我与我相同的错误
getitstarted 2013年

我是否有版本问题?我将django 1.5和python 2.7.3与sql一起使用(对于debian,为14.14)
getitstarted 2013年

4
与python 3是:pip install mysqlclient
sadalsuud

1
这在python3中不起作用。需要python3中不可用的
ConfigParser

40

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

尝试
sudo apt-get install python-mysqldb


38

如果在尝试使用pip安装mysqlclient时遇到错误,则可能缺少mysql dev库。通过运行以下命令进行安装:

apt-get install libmysqlclient-dev

并再次尝试安装mysqlclient:

pip install mysqlclient

2
pip install mysqlclient。我忘记将其添加到我的requirements.txt文件中,因此即使存在并填充了MySQL数据库,我的Django Web服务器也无法与其进行交互。
布莱尔23年

感谢这个答案,保存了我的一天,我一直在尝试使mysql与django一起工作2天:)
rishabhr0y

13

我的答案类似于@ Ron-E,但是我得到了一些其他错误/更正,因此我在Mavericks和Python 2.7.6上将Mac OSX的步骤放在下面。

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

    pip install mysql-python
  2. 执行上述操作时,出现错误“ EnvironmentError:找不到mysql_config”。 在此处输入图片说明 要解决此问题,请在终端中执行以下操作:

    export PATH=$PATH:/usr/local/mysql/bin
  3. 重新执行步骤1时,出现新错误“错误:命令'cc'失败,退出状态为1”。 在此处输入图片说明 要解决此问题,我在终端中进行了以下操作:

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


感谢您的建议。我首先遇到你的问题。
user2772346

我已经按照您的方式进行,但在我的情况下始终会出现第一个错误。对于`export CFLAGS = -Qunused-arguments`终端给出了该错误:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy 2015年

12

当我在Mac OS X Mountain Lion中使用python,mysql,sequel pro应用程序为PyCharm设置Django开发环境时,出现与该线程所有者相同的错误。但是,我为在Mac OS Mountain Lion x86_x64(MySql和Python也应为同一体系结构)下运行python-mysqldb的人的答案,并且已经尝试了所有类似pip等的方法。为了解决此问题,请执行以下步骤:

  1. 此处下载适用于Python的MySql
  2. 解压下载的文件。在终端窗口中,执行以下操作:tar xvfz downloade.tar。
  3. cd /到未压缩的目录
  4. 运行sudo python setup.py install
  5. 如果出现类似以下错误:“环境错误:/ usr / local / bin / mysql_config未找到”,则尝试添加路径ass,如下所示:“ 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,))

  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. 最后,我在控制台中执行了以下操作:

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

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


非常感谢。我花了将近一个星期才使用mysql haha​​运行我的第一个项目。Phew ...
Avigit's

谢谢你!你救了我的一天!我正在使用Mac并遇到相同的问题。
user2772346

7

您缺少python mysqldb库。使用以下命令(对于Debian / Ubuntu)进行安装: sudo apt-get install python-mysqldb


这是一个答案,但是我认为如果您可以添加更多细节而不是一行,那将是很棒的。谢谢!
UliKöhler2014年

上面的命令帮助我们将Python接口安装到MySQL数据库。
海梅



4

对于Ubuntu 16.04和18.04或python 3版本

sudo apt-get install python3-mysqldb

4

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

sudo apt-get install python3-dev libmysqlclient-dev 

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


4

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

$ 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


2

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

brew install mysql

pip install mysql-python

运行没有错误。


命令“ / usr / bin / python -u -c”导入设置工具,标记化; __ 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,文件,“ exec”))”安装--record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt-单个版本-外部管理的--compile失败,并出现错误/ private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /中的代码1
tisuchi

2

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

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

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

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

希望对您有所帮助。


1

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

在您的shell中运行pip install pymysql

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

加:

导入pymysql

pymysql.install_as_MySQLdb()

这应该可以解决问题。


“然后,在项目原始目录中编辑init.py文件”-是什么意思__init__.py
亚历克斯·于


0

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



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

0

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

对我有用的解决方案

conda install mysql-python

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


你能解释一下它
AYUSH Vatsyayan

-2

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


-3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.