Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error Installing mysqlclient on Ubuntu 16.04 using pip and Python 3.6

Tags:

I am getting a strange error when trying to install mysqlclient on Ubuntu 16.04 Xenial with pip + Python 3.6:

 pip install mysqlclient 

Output:

 _mysql.c:40:20: fatal error: Python.h: No such file or directory  compilation terminated.  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 

Following the installation requirements, I have tried installing the required libraries, but not luck so far.

sudo apt-get install python3-dev libmysqlclient-dev 

Does someone know the workaround for this issue?

like image 999
Ander Avatar asked Feb 10 '17 06:02

Ander


People also ask

Does MySQLClient support Python 3?

This project is a fork of MySQLdb1. This project adds Python 3 support and fixed many bugs.


2 Answers

I found the problem, seems like for installing mysqlclient in python3.6 the library python3.6-dev is required.

Just open a terminal and run the following command:

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

You may get the following error when trying to install the library:

Reading state information... E: Unable to locate package python3.6-dev E: Couldn't find any package by glob 'python3.6-dev' E: Couldn't find any package by regex 'python3.6-dev' 

If that is the case, just try adding the following repository first:

sudo add-apt-repository ppa:jonathonf/python-3.6 sudo apt-get update 

After doing so, you should be able to install both python3.6 and python3.6-dev packages.

like image 184
Ander Avatar answered Nov 04 '22 22:11

Ander



I had trouble installing mysqlclient on python 3.6.3, so I downgraded to version 3.6.2 and it worked.

sudo apt-get install build-essential checkinstall sudo apt-get install libreadline-gplv2-dev  libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev cd /usr/bin sudo wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz sudo tar xzf Python-3.6.2.tgz cd Python-3.6.2 sudo ./configure --enable-optimizations sudo make altinstall 

python3.6 should point at 3.6.2

python --version # Python 3.6.2 

now install mysqlclient

python3.6 -m pip install mysqlclient 

read more

like image 37
Bar Horing Amir Avatar answered Nov 04 '22 22:11

Bar Horing Amir