Error loading MySQLdb module: libmysqlclient.so.20: cannot open shared object file: No such file or directory
Question:
I had a running django project and for some reasons I had to remove the current mysql version and install a different MySQL version in my machine.
But now when I am trying to run this program am getting an error as follows:
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient.so.20: cannot open shared object file: No such file or directory
Answers:
reinstall the c shared library:
pip uninstall mysql-python
pip install mysql-python
Use the following commands:
pip uninstall mysql-python
pip install mysql-python
In my case it work because it searches from the complied files.
My issue with the same error message was mysql environment not all the way set up. I needed to uninstall MySQL-python; install libmysqlclient-dev; reinstall MySQL-python to rectify the issue.
So the fix was too:
- sudo pip uninstall MySQL-python (uninstall from your package manager of choice)
-
sudo apt-get install libmysqlclient-dev
-
sudo pip install MySQL-python
**I should also mention that I used the –no-cache-dir option with pip install to hit PYPI directly which helped discover the following:
sh: 1: mysql_config: not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-Y7RFpJ/mysql-python/setup.py", line 17, in <module>
metadata, options = get_config()
File "/tmp/pip-build-Y7RFpJ/mysql-python/setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "/tmp/pip-build-Y7RFpJ/mysql-python/setup_posix.py", line 25, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found
and lead me to here
Using: mysql 5.7, mysql-python 1.2.5, django 1.8.9, ubuntu 16.04
I did fix the same issue via setting below environment variable:
export LD_LIBRARY_PATH=/usr/local/mysql/lib
just in case pip uninstall
& pip install
not working, and you dont want to set specific path to ld_library_path
, what I did on my vps:
cd /usr/local/lib
sudo ln -s /path/to/your/libmysqlclient.so.20
in my case my mysql is installed from linuxbrew (there is some reason to install inside home), so I had to navigate there $HOME/.linuxbrew/Cellar/mysql/5.7.18/lib/libmysqlclient.so.20
In my case the problem was caused by Ubuntu upgrades, so I can’t find libmysqlclient.so.20
in /usr/lib/x86_64-linux-gnu
.
Solution:
- Check existance
libmysqlclient.so.XX
in /usr/lib/x86_64-linux-gnu
(or similar)
- Download
libmysqlclient.so.XX
from Ubuntu website (eg. link for v20)
- Install lib using dpkg command
sudo dpkg -i libmysqlclient(...).deb
and sudo apt-get install -f
- Link lib:
ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.XX.so libmysqlclient.XX.so
I had the same problem and I fixed making what the mysqlclient official doc says to install before:
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
Just installing these packages works for me :
default-libmysqlclient-dev build-essential
I had a running django project and for some reasons I had to remove the current mysql version and install a different MySQL version in my machine.
But now when I am trying to run this program am getting an error as follows:
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient.so.20: cannot open shared object file: No such file or directory
reinstall the c shared library:
pip uninstall mysql-python
pip install mysql-python
Use the following commands:
pip uninstall mysql-python
pip install mysql-python
In my case it work because it searches from the complied files.
My issue with the same error message was mysql environment not all the way set up. I needed to uninstall MySQL-python; install libmysqlclient-dev; reinstall MySQL-python to rectify the issue.
So the fix was too:
- sudo pip uninstall MySQL-python (uninstall from your package manager of choice)
-
sudo apt-get install libmysqlclient-dev
-
sudo pip install MySQL-python
**I should also mention that I used the –no-cache-dir option with pip install to hit PYPI directly which helped discover the following:
sh: 1: mysql_config: not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-Y7RFpJ/mysql-python/setup.py", line 17, in <module>
metadata, options = get_config()
File "/tmp/pip-build-Y7RFpJ/mysql-python/setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "/tmp/pip-build-Y7RFpJ/mysql-python/setup_posix.py", line 25, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found
and lead me to here
Using: mysql 5.7, mysql-python 1.2.5, django 1.8.9, ubuntu 16.04
I did fix the same issue via setting below environment variable:
export LD_LIBRARY_PATH=/usr/local/mysql/lib
just in case pip uninstall
& pip install
not working, and you dont want to set specific path to ld_library_path
, what I did on my vps:
cd /usr/local/lib
sudo ln -s /path/to/your/libmysqlclient.so.20
in my case my mysql is installed from linuxbrew (there is some reason to install inside home), so I had to navigate there $HOME/.linuxbrew/Cellar/mysql/5.7.18/lib/libmysqlclient.so.20
In my case the problem was caused by Ubuntu upgrades, so I can’t find libmysqlclient.so.20
in /usr/lib/x86_64-linux-gnu
.
Solution:
- Check existance
libmysqlclient.so.XX
in/usr/lib/x86_64-linux-gnu
(or similar) - Download
libmysqlclient.so.XX
from Ubuntu website (eg. link for v20) - Install lib using dpkg command
sudo dpkg -i libmysqlclient(...).deb
andsudo apt-get install -f
- Link lib:
ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.XX.so libmysqlclient.XX.so
I had the same problem and I fixed making what the mysqlclient official doc says to install before:
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
Just installing these packages works for me :
default-libmysqlclient-dev build-essential