37

I am new to python and I am trying django framework that involves some MySql and ran into this error when try to do pip install mysqlclient and down the lines of cmd messages I got this.

   Failed building wheel for mysqlclient
  Running setup.py clean for mysqlclient
Failed to build mysqlclient
Installing collected packages: mysqlclient
  Running setup.py install for mysqlclient ... error
    Complete output from command c:\users\ronanl~1\envs\py1\scripts\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\RONANL~1\\AppData\\Local\\Temp\\pip-install-pkbqy3t3\\mysqlclient\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\RONANL~1\AppData\Local\Temp\pip-record-moxwf7lu\install-record.txt --single-version-externally-managed --compile --install-headers c:\users\ronanl~1\envs\py1\include\site\python3.7\mysqlclient:
    running install
    running build
    running build_py
    creating build
    creating build\lib.win32-3.7
    copying _mysql_exceptions.py -> build\lib.win32-3.7
    creating build\lib.win32-3.7\MySQLdb
    copying MySQLdb\__init__.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\compat.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\connections.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\converters.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\cursors.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\release.py -> build\lib.win32-3.7\MySQLdb
    copying MySQLdb\times.py -> build\lib.win32-3.7\MySQLdb
    creating build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\__init__.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CLIENT.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\CR.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\ER.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\FLAG.py -> build\lib.win32-3.7\MySQLdb\constants
    copying MySQLdb\constants\REFRESH.py -> build\lib.win32-3.7\MySQLdb\constants
    running build_ext
    building '_mysql' extension
    creating build\temp.win32-3.7
    creating build\temp.win32-3.7\Release
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -Dversion_info=(1,3,13,'final',0) -D__version__=1.3.13 "-IC:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include" "-Ic:\users\ronan lina\appdata\local\programs\python\python37-32\include" "-Ic:\users\ronan lina\appdata\local\programs\python\python37-32\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17134.0\cppwinrt" /Tc_mysql.c /Fobuild\temp.win32-3.7\Release\_mysql.obj /Zl
    _mysql.c
    _mysql.c(29): fatal error C1083: Cannot open include file: 'mysql.h': No such file or directory
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2
> 
> 
> Command "c:\users\ronanl~1\envs\py1\scripts\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\RONANL~1\\AppData\\Local\\Temp\\pip-install-pkbqy3t3\\mysqlclient\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\RONANL~1\AppData\Local\Temp\pip-record-moxwf7lu\install-record.txt --single-version-externally-managed --compile --install-headers c:\users\ronanl~1\envs\py1\include\site\python3.7\mysqlclient" failed with error code 1 in C:\Users\RONANL~1\AppData\Local\Temp\pip-install-pkbqy3t3\mysqlclient\

anyone knows how to fix this ?

6
  • This might help: stackoverflow.com/a/4290261/747744 Commented Jun 30, 2018 at 18:51
  • 10
    I can’t help with building the wheel for Python 3.7, but if you just want to use Python 3 with mysqlclient, then pip install mysqlclient==1.3.12 With Python 3.6 should install a prebuilt wheel without any issues. Commented Jun 30, 2018 at 20:18
  • 2
    You could try this unofficial wheel lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient Commented Jun 30, 2018 at 21:07
  • 2
    Glad you got it working. It’s best to use the latest 3.6.x, to make sure you get the latest bug and security fixes. Commented Jul 1, 2018 at 14:38
  • 3
    pip install mysqlclient==1.3.12 helped me.I was in python 3.7, then uninstalled that and installed python 3.6.5. Then that command worked for me Commented Aug 5, 2018 at 15:56

15 Answers 15

28

You need to install the following dependencies before installing mysqlclient for python 3.7 in your system.

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

I hope this will help you.

Sign up to request clarification or add additional context in comments.

2 Comments

worked in ubuntu 19.04 with python 3.7.3 and pip 19.1.1.
After this I ran this too pip install mysqlclient.
25

I installed the following library on Ubuntu and after that, the issue got resolved.

sudo apt-get install libssl-dev

and then I was able to install mysqlclient using the following command

pip install mysqlclient

Comments

5

currently the mysql-connector for python 3.7 is not available in official wesite but u can fix this issue by installing wheel with specific windows and python version. this solutionpip install (ex/dir)/mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl for win 64-bi and python 3.7

check the link below and download the specific wheel for your system. download and install the wheel for specific version by using "pip install (full path with file name in my case ex:-"pip install C:\Users\%user%\Downloads\mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl")

Comments

5

This should work.

Do this first

sudo apt-get install python3.7-dev

And Then

pip install mysqlclient

Comments

4

I installed it with the following command and works well now (on Mac): LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient

see connected answer: Error installing mysql-python: library not found for -lssl

Comments

3

You have to install "mysqlclient-1.4.1-cp37-cp37m-win32.whl" (32bit) file

  1. Download 32bit file from https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
  2. if your file is in Downloads folder write the command in your cmd

    i. cd C:\Users\Nour Noby\Downloads ["Nour Noby" should be changed ]

    ii. pip install mysqlclient-1.4.1-cp37-cp37m-win32.whl ["mysqlclient-1.4.1-cp37-cp37m-win32.whl" should be replaced with your downloaded filename ].

Comments

2

As of 2019, here is how to run smoothly pip install mysqlclient on MacOS:

brew info openssl and follow the commands at the bottom

  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc

Other approaches:

  • brew install/upgrade/reinstall mysql : did not fix the issue for me, but has the nice side effect to make sure your installation is clean.
  • brew install mysql-connector-c : to make that work you have to unlink mysql, which ruins your setup and it did not fix the issue for me.

Comments

2

ensuring you have had done the needful with python...

and installing on the global level... (not virtual environment)

sudo apt-get install mysql-server pip install --upgrade setuptools

I had come across the same problem, because I installed default Python2.7.15, and python3 would break even after doing the needful for Python (being python2)

something that worked for me was (effectively the last one is what made it work, but i think they were equally required on my virtualenvironment with python3)

sudo apt-get install libmysqlclient-dev
sudo apt-get install python3-pymysql
sudo apt-get install python3.6-dev

python3.7 in your case in the virtualenv

I also had to go through..

Comments

1

Python 3.11, MariaDB 10.1, CentOS 7, latest possible version - 2.1.1:

pip install mysqlclient==2.1.1

If you try to install a later version, you will get an error:

× Building wheel for mysqlclient (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [51 lines of output]

...

src/MySQLdb/_mysql.c:539:49: error: ‘MYSQL_OPT_SSL_ENFORCE’ undeclared (first use in this function) mysql_optionsv(&(self->connection), MYSQL_OPT_SSL_ENFORCE, (void *)&enforce_tls);

...

ERROR: Failed building wheel for mysqlclient

...

Failed to build mysqlclient ERROR: Could not build wheels for mysqlclient, which is required to install pyproject.toml-based projects

Comments

0

use this command : sudo apt-get install libssl-dev

1 Comment

Please try to explain a bit more.
0

In my case, I had the 32-bit version of Python installed, instead of the 64-bit one. Install 64-bit Python and it would work alright.

Comments

0

Try alternative 'MySQL Connector/Python'

  1. https://docs.djangoproject.com/en/3.1/ref/databases/#mysql-notes
  2. https://dev.mysql.com/doc/connector-python/en/connector-python-django-backend.html
  3. https://pypi.org/project/mysql-connector-python/

Comments

0

try to change python3 to python or python3.7-dev or as installed on your machine.

sudo apt-get install python3 default-libmysqlclient-dev

Comments

0

Check for the updates

sudo apt-get update
  1. Install the

    sudo apt-get install pkg-config
    

This will solve the package config errors

2.Then try to install the

sudo apt-get install libmysqlclient-dev
  1. Now, try to install

Install this in the environment of the project..

   pip3 install mysqlclient

Hope this works for you....

Comments

-2

Use Anaconda and execute conda install mysqlclient

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.