Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to find Protobuf include directory during install mysql-connector over pip

I pulled mysql-connector-python code and when I run python ./setup.py build I get the following error:

Unable to find Protobuf include directory. 

pip install Protobuf was useless

How can I solve this problem?

like image 447
wei.lu Avatar asked Mar 26 '17 13:03

wei.lu


People also ask

Can you pip install MySQL?

Installation: To install Python-mysql-connector module, one must have Python and PIP, preinstalled on their system. To check if your system already contains Python, go through the following instructions: Open the Command line(search for cmd in the Run dialog( + R).

Which command is used to install the MySQL Connector?

We recommend that you use PIP to install "MySQL Connector". PIP is most likely already installed in your Python environment.


2 Answers

I found that this error occurs since version 2.2.3. You can avoid this issue using version 2.1.6.

pip install mysql-connector==2.1.6

try above.

like image 95
yutaka2487 Avatar answered Sep 27 '22 21:09

yutaka2487


As of 2.2.3, Connector/Python uses a C++ extension that interfaces with a MySQL server with the X plugin enabled, using Protobuf as data interchange format.

So, you need to set up where Protobuf is installed on your system (the library, include and protoc binary paths).

Requirements

  • A C/C++ compiler, such as gcc
  • Protobuf C++ (version >= 2.6.0)
  • Python development files

Installation

You have two options when using pip + pypi:

1) Set environment variables for MYSQLXPB_PROTOBUF_INCLUDE_DIR, MYSQLXPB_PROTOBUF_LIB_DIR and MYSQLXPB_PROTOC.

2) Add --install-option to set these options when using pip:

shell> python install mysql-connector --install-option='--with-protobuf-include-dir=<path>' --install-option='--with-protobuf-lib-dir=<path>' --install-option='--with-protoc=<path>' 

Important: Keep in mind that 2.2.3 is a development release.

like image 20
Nuno Mariz Avatar answered Sep 27 '22 22:09

Nuno Mariz