[Django]-Django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

141๐Ÿ‘

โœ…

It looks like you donโ€™t have the python mysql package installed, try:

pip install mysql-python

or if not using a virtual environment (on *nix hosts):

sudo pip install mysql-python
๐Ÿ‘คRon E

49๐Ÿ‘

If you get errors trying to install mysqlclient with pip, you may lack the mysql dev library. Install it by running:

apt-get install libmysqlclient-dev

and try again to install mysqlclient:

pip install mysqlclient
๐Ÿ‘คPsddp

41๐Ÿ‘

You have to install python-mysqldb โ€“ Python interface to MySQL.

Try:

sudo apt-get install python-mysqldb
๐Ÿ‘คRashi

14๐Ÿ‘

My answer is similar to @Ron-E, but I got a few more errors/corrections so Iโ€™m putting my steps below for Mac OSX on Mavericks and Python 2.7.6.

  1. Install Python mysql package (if you get a success message, then ignore the below steps)

    pip install mysql-python
    
  2. When I did the above, I got the error โ€œEnvironmentError: mysql_config not foundโ€
    enter image description here
    To fix this, I did the below in terminal:

    export PATH=$PATH:/usr/local/mysql/bin
    
  3. When I reran step 1, I get a new error โ€œerror: command โ€˜ccโ€™ failed with exit status 1โ€
    enter image description here
    To fix this, I did the below in terminal:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
    
  4. I reran step 1 and got the success message โ€˜Successfully installed mysql-pythonโ€™!

๐Ÿ‘คWill

12๐Ÿ‘

When I set up Django development environment for PyCharm in Mac OS X Mountain Lion with python, mysql, sequel pro application I got error same as owner of this thread.
However, my answer for them who is running python-mysqldb under Mac OS Mountain Lion x86_x64 (MySql and Python also should be same architecture) and already tried everything like pip and etc. In order fix this problem do following steps:

  1. Download MySql for Python from here
  2. Untar downloaded file. In terminal window do following: tar xvfz downloade.tar.
  3. cd /to untared directory
  4. Run sudo python setup.py install
  5. If you get error something like this: โ€œEnvironment Error: /usr/local/bin/mysql_config not foundโ€ then try to add path ass follows: โ€œexport PATH=$PATH:/usr/local/mysql/binโ€. But id did not helped to me and I found another solution. In the end of command execution error output which looks like this:

    File โ€œ/path_to_file/MySQL-python-1.2.4b4/setup_posix.pyโ€, line 25, in mysql_config
    raise EnvironmentError(โ€œ%s not foundโ€ % (mysql_config.path,))

  6. Open setup_posix.py with vim and go to line 25 (In your case it can be different unless if it is same version).

  7. Line 25 should look like this after your editing unless your mysql have symbolic link like follows โ€˜/usr/local/mysql/bin/โ€™:

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

  8. After this I got another error as following:

    django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
    Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so
    Reason: image not found

  9. Finally I did following in console:

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

Currently everything works fine. So I hope it will be helpful for somebody who uses Mac. ๐Ÿ™‚

๐Ÿ‘คKhamidulla

9๐Ÿ‘

If you are using Python version 3.4 or above, you have to install

sudo apt-get install python3-dev libmysqlclient-dev 

in your terminal. Then install pip install mysqlclient on your virtual env or where you installed pip.

๐Ÿ‘คselvakumar

9๐Ÿ‘

Iโ€™ve solved this issue in this environment:

$ 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,
        },
    }
}

If you use 'ENGINE': 'mysql.connector.django' , install driver executing:

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

Note that $ pip install mysql-pythondidnโ€™t work for me.

Note that if you use 'ENGINE': 'django.db.backends.mysql' , you should install driver executing:
$ pip install mysqlclient

Finally execute:
$ python manage.py migrate

If itโ€™s all right, python creates all these tables id database:

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
๐Ÿ‘คJavierFuentes

8๐Ÿ‘

You are missing the python mysqldb library. Use this command (for Debian/Ubuntu) to install it:
sudo apt-get install python-mysqldb

๐Ÿ‘คHaimei

8๐Ÿ‘

It is because it did not find sql connector. try:

pip install mysqlclient
๐Ÿ‘คAnand Prakash

6๐Ÿ‘

Download and install Mysql-python from here for windows environment. http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python.

๐Ÿ‘คruddra

5๐Ÿ‘

For Ubuntu 16.04 and 18.04 or python 3 versions

sudo apt-get install python3-mysqldb
๐Ÿ‘คGowthaman D

3๐Ÿ‘

On Ubuntu it is advised to use the distributions repository.

sudo apt-get install python-mysqldb
๐Ÿ‘คGaurav Agarwal

3๐Ÿ‘

try:

pip install mysqlclient

I recommend to use it in a virtual environment.

๐Ÿ‘คOmid Estaji

2๐Ÿ‘

With the same error message as Will, it worked for me to install mysql first as the missing file will be added during the installation.
So after

brew install mysql

pip install mysql-python

ran without errors.

๐Ÿ‘คcmdAmir

2๐Ÿ‘

This happened with me as well and I believe this has become a common error not only for Django developers but also for Flask as well, so the way I solved this issue was using brew.

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

This way every single issue was solved and both frameworks work absolutely fine.

P.S.: For those who use macports (such as myself), this can be an issue as brew works in a different level, my advice is to use brew instead of macports

I hope I could be helpful.

๐Ÿ‘คpykimera

2๐Ÿ‘

I was having the same problem.The following solved my issue

Run pip install pymysql in your shell

Then, edit the init.py file in your project origin directory (the same as settings.py)
and then

add:

import pymysql
pymysql.install_as_MySQLdb()

this should solve the problem.

๐Ÿ‘คVaishnav Raja

2๐Ÿ‘

I think it is the version error.

try installing this in following order:

  1. sudo apt-get install python3-mysqldb

  2. pip3 install mysqlclient

  3. python3 manage.py makemigrations

  4. python3 manage.py migrate

๐Ÿ‘คSuvidh Jain

1๐Ÿ‘

I faced this similar error to when I wanted to use MySQL as the default database.
These error might be as a result of the fact that mysqlclient hasnโ€™t been installed.
And this can be installed from the command line using;
pip install mysqlclient (for recent versions of python)
or pip install mysql-python (for older versions of python)
In my case, after meeting this requirement, I still had this same error and it was solved as below;
In your django project directory, select venv directory and under these directory,
select the pyvenv.cfg file and click allow on the dialog box which ask you if you want to edit this file. In this file,
include-system-site-packages is set to false. So change this line of code to true like this;

include-system-site-packages = true

Everything now works well

๐Ÿ‘คMbah Romarick

1๐Ÿ‘

I was stuck in this for a very long and then I realized whatโ€™s wrong django checks for mysqlclient if itโ€™s not installed before django it throws this error so simple solution is

pip uninstall django
pip install mysqlclient
pip install django
๐Ÿ‘คAdinath Gore

0๐Ÿ‘

Just to add to other answers, if youโ€™re using Django, it is advisable that you install mysql-python BEFORE installing Django.

๐Ÿ‘คAnoyz

0๐Ÿ‘

I wasted a lot of time on this. Turns out that the default database library is not supported for Python 3. You have to use a different one.

๐Ÿ‘คCoderGuy123

0๐Ÿ‘

if the error looks like this

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

then try :

pip install python-mysqldb
๐Ÿ‘คblueChair

0๐Ÿ‘

Faced similar issue. I tried installing mysql-python using pip, but it failed due to gcc dependency errors.

The solution that worked for me

conda install mysql-python

Please note that I already had anaconda installed, which didnโ€™t had gcc dependency.

๐Ÿ‘คAyush Vatsyayan

0๐Ÿ‘

try this, simply using pip:
On Windows the recommended command is:

python -m pip install mysqlclient

use it in a virtual environment

๐Ÿ‘คSAJAD

0๐Ÿ‘

I had tried running different commands in this question. However none of them work for me in MXLinux. Itโ€™s a Debian 11 based distro (As of writing this). So, this answer should be applicable to Debian also.

sudo apt-get install python3-dev default-libmysqlclient-dev

Then install mysql in your python environment

pip install mysqlclient

I have tested this against, Python==3.8.13. AFAIK, this will work with Pyenv, Conda, Pipenv, Poetry etc. too.

Note:- This may work with Latest Version of Debian Based distros like LinuxMint, KDE Neon, Zorin OS, Kubuntu, elementary OS, Pop!_OS, Linux Lite, Linuxfx, etc. too.

๐Ÿ‘คAjeeb.K.P

0๐Ÿ‘

I was running into a similar problem and located the problem to be an improperly installed mysqlclient. Installation of mysqlclient on Windows using the pip channel was causing dependency issues.
Install mysqlclient with the command:

> pip install mysqlclient

If that doesnโ€™t work, install just the mysqlclient binaries. This seemed to work for me.

> pip install --only-binary :all: mysqlclient

Following is how my ./projectName/settings.py looks.

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'dbname',
    'USER': 'user',
    'PASSWORD': 'password',
    'HOST': 'localhost',
    'PORT': '3306',
},

If you are going to use mysql-connector for the engine, then install the mysql-connector using

> pip install mysql-connector-python

And change the โ€˜ENGINEโ€™ of DATABASES in the settings.py file to โ€˜mysql.connector.djangoโ€™.

I recommend all of the pip installations using a virtual environment.

๐Ÿ‘คSamya D.

-1๐Ÿ‘

Source

Install (if not found):

pip install mysql.connector

Settings:

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

-1๐Ÿ‘

Try this

apt-get install libmysqlclient-dev

and try again to install mysqlclient:

pip install mysqlclient
๐Ÿ‘คAbhi Singh

-3๐Ÿ‘

Maybe you can try the following mode of operation:
sudo python manage.py runserver 0.0.0.0:8000

๐Ÿ‘คyanlong xu

Leave a comment