20

i'm tryng to import mysqlclient library for python with pip, when i use the command
pip install mysqlclient it return an error:

Collecting mysqlclient
Using cached     https://files.pythonhosted.org/packages/ec/fd/83329b9d3e14f7344d1cb31f128e6dbba70c5975c9e57896815dbb1988ad/mysqlclient-1.3.13.tar.gz
Installing collected packages: mysqlclient
Running setup.py install for mysqlclient ... error
Complete output from command c:\users\astrina\appdata\local\programs\python\python36\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\astrina\\AppData\\Local\\Temp\\pip-install-40l_x_f4\\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\astrina\AppData\Local\Temp\pip-record-va173t5v\install-record.txt --single-version-externally-managed --compile:
c:\users\astrina\appdata\local\programs\python\python36\lib\distutils\dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type'
  warnings.warn(msg)
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.6
copying _mysql_exceptions.py -> build\lib.win-amd64-3.6
creating build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\__init__.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\compat.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\connections.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\converters.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\cursors.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\release.py -> build\lib.win-amd64-3.6\MySQLdb
copying MySQLdb\times.py -> build\lib.win-amd64-3.6\MySQLdb
creating build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\__init__.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\CLIENT.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\CR.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\ER.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\FIELD_TYPE.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\FLAG.py -> build\lib.win-amd64-3.6\MySQLdb\constants
copying MySQLdb\constants\REFRESH.py -> build\lib.win-amd64-3.6\MySQLdb\constants
running build_ext
building '_mysql' extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

----------------------------------------
Command "c:\users\astrina\appdata\local\programs\python\python36\python.exe -u -c "import setuptools, 
tokenize;__file__='C:\\Users\\astrina\\AppData\\Local\\Temp\\pip-install- 
40l_x_f4\\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\astrina\AppData\Local\Temp\pip- 
record-va173t5v\install-record.txt --single-version-externally-managed -- 
compile" failed with error code 1 in C:\Users\astrina\AppData\Local\Temp\pip- 
install-40l_x_f4\mysqlclient\

I've already installed Microsoft Build Tools 2015 but the problem persist

snakecharmerb
  • 47,570
  • 11
  • 100
  • 153
Gargantua
  • 420
  • 2
  • 5
  • 17

13 Answers13

44

You may need to install the Python 3 and MySQL development headers and libraries like so: For UBUNTU or Debian

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

Red Hat / CentOS

sudo yum install python3-devel mysql-devel

Then try

pip install mysqlclient
Debashish D. Dev
  • 549
  • 1
  • 4
  • 3
  • Just a note: if you are doing this in a docker container, then you also likely need to install `gcc` – WiR3D Feb 18 '22 at 07:55
18

First install python 3.6.5, then run

pip install mysqlclient==1.3.12
CertainPerformance
  • 356,069
  • 52
  • 309
  • 320
6

Try download and install from wheel instead. Take note of your python version and download the correct one.

https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

Community
  • 1
  • 1
Lai Niel
  • 111
  • 5
  • While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - [From Review](/review/low-quality-posts/20539483) – Philipp Maurer Aug 09 '18 at 07:59
  • @PhilippMaurer That link is not a link to an answer but just to the download. The answer is the sentence before the link. It might not be a great one, it might not even be correct, I don't know, but it is an answer and [should not be flagged as not being one](https://meta.stackoverflow.com/questions/287563/youre-doing-it-wrong-a-plea-for-sanity-in-the-low-quality-posts-queue). – anothernode Aug 09 '18 at 08:22
  • I'll explain a bit here... if you are using python3.7 you should download `mysqlclient‑1.4.2‑cp37‑cp37m‑win32.whl` for 32-bit window. and same for python3.5 => `mysqlclient‑1.4.2‑cp35‑cp35m‑win_amd64.whl` for 64-bit windows. here you can compare `cp` number with python version. for your windows type – Asad Shakeel Jul 03 '19 at 11:41
6

For me, it was a mixture of an old setup tools and missing packages

pip install --upgrade setuptools

apt install gcc libssl-dev
Sayse
  • 42,633
  • 14
  • 77
  • 146
6

Install below packages and it will resolve the issue.

apt-get install python3-dev default-libmysqlclient-dev build-essential
tlentali
  • 3,407
  • 2
  • 14
  • 21
3

Try pip install --only-binary :all: mysqlclient Worked for me

Vince D
  • 137
  • 3
  • 14
  • 1
    shows " Could not find a version that satisfies the requirement mysqlclient (from versions: ) No matching distribution found for mysqlclient " – alhelal Feb 16 '20 at 06:38
2

First try this command

(keep space properly ie, pip space install space --only-binary space :all: space mysqlclient)

pip install --only-binary :all: mysqlclient if still error then try this... Go to this website Python Extension package and press ctrl+F and search mysqlclient. You will find a file name like this.. mysqlclient‑1.4.5‑cp38‑cp38‑win_amd64.whl

Choose carefully ---According to python version There is a step given to choose it.

  1. cp38 means for python 3.8 version and cp 37 means for python 3.6 version so first check your python version wether it is 3.8,3.7,3.6,3.5,3.4 then download accordingly.

  2. amd64--- while checking python version also check whether your python is of 64-bit or 32-bit. then select accordingly. If your python is of 32-bit then select amd32.

Otherwise you will face problem. Then download the file and install it manually using pip command. There are steps given below:-

After download open command prompt and go to that directory where that downloaded file available( or better to cut that file and paste into your desktop) and type: NOTE :- PLEASE TYPE AFTER DOWNLOAD THE FILE... This is for python 3.8 and 64-bit $ pip install mysqlclient‑1.4.5‑cp38‑cp38‑win_amd64.whl For python 3.7 and 32-bit $ pip install mysqlclient‑1.4.5‑cp37‑cp37m‑win32.whl

1

You can set ssl library path explicitly.

LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient
1

I had look a like problem, on MacOs Catalina, solved with this:

ARCHFLAGS="-arch x86_64" pip3 install mysqlclient
Sunderam Dubey
  • 1
  • 11
  • 20
  • 40
oruchkin
  • 1,145
  • 1
  • 10
  • 21
0

Better if you install python 64-bit. Then pip install mysqlclient will work sure otherwise you can follow these stepssteps to install using python extension packages

0
  1. Install build-essential

    sudo apt-get install build-essential

  2. Install mysqlclient

    pip install mysqlclient

AyamDobhal
  • 33
  • 7
-1

This happened to me when I installed python3.8 from deadsnakes/ppa repository and created virtualenv using it.

Above solutions didn't work for me and after installing python3.8-dev it is installed successfully.

sudo apt install python3.8-dev

After that

python3.8 -m pip install mysqlclient==1.3.12

discover
  • 411
  • 1
  • 6
  • 16
-2

I had the same problem and I fixed in a really stupid way. I just uninstalled python and installed it through the Microsoft Store.