在pip安装mysql-connector期间无法找到Protobuf include目录

时间:2017-03-26 13:58:27

标签: python mysql-connector-python

我提取mysql-connector-python代码,当我运行python ./setup.py build时出现以下错误:

Unable to find Protobuf include directory.

pip install Protobuf没用了

我该如何解决这个问题?

8 个答案:

答案 0 :(得分:107)

我发现自2.2.3版以来发生了此错误。 您可以使用版本2.1.6来避免此问题。

pip install mysql-connector==2.1.6

尝试上面。

答案 1 :(得分:12)

从2.2.3开始,Connector / Python使用C ++扩展,该扩展与启用了X插件的MySQL服务器连接,使用Protobuf作为数据交换格式。

因此,您需要设置系统上安装Protobuf的位置(库,包含和protoc二进制路径)。

<强>要求

  • C / C ++编译器,例如gcc
  • Protobuf C ++(版本&gt; = 2.6.0)
  • Python开发文件

<强>安装

使用pip + pypi时有两种选择:

1)为MYSQLXPB_PROTOBUF_INCLUDE_DIRMYSQLXPB_PROTOBUF_LIB_DIRMYSQLXPB_PROTOC设置环境变量。

2)使用pip时添加--install-option来设置这些选项:

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

重要提示:请注意,2.2.3是开发版本。

答案 2 :(得分:9)

我的Ubuntu 16.04上也有这个问题,最后可以通过以下步骤安装mysql-connector 2.2.3:

  1. 通过Ubuntu软件包管理器安装这些软件包:

    sudo apt install libprotobuf-dev protobuf-compiler
    
  2. 设置这些环境变量:

    export MYSQLXPB_PROTOC=/usr/bin/protoc
    export MYSQLXPB_PROTOBUF_INCLUDE_DIR=/usr/include/google/protobuf
    export MYSQLXPB_PROTOBUF_LIB_DIR=/usr/lib/x86_64-linux-gnu
    
  3. 通过Python包管理器安装mysql-connector包:

    pip install mysql-connector
    
  4. 希望这有帮助。

答案 3 :(得分:3)

出于某种原因,我注意到pip install mysql-connector尝试安装v2.2.3,我们不想要。因此,我特意输入了pip install mysql-connector==2.1.6并且安装时没有错误。请注意我正在使用运行python 3.6.1的virtualenv。我在那里安装了它。以下是有关安装特定python模块的文档,这对我有帮助。 https://docs.python.org/3/installing/index.html

答案 4 :(得分:1)

我在 WIN 7 64位,python 27.这个命令对我有用,看起来最合适,特别是当 v2.2.3 是开发版本时。< / p>

pip install mysql-connector==2.1.4

答案 5 :(得分:0)

要安装带有mac端口的protobuf,我做了以下

安装protobuf:

port install protobuf-cpp

声明protobuf在哪里

export MYSQLXPB_PROTOBUF_LIB_DIR=/opt/local/lib export MYSQLXPB_PROTOC=/opt/local/bin/protoc export MYSQLXPB_PROTOBUF_INCLUDE_DIR=/opt/local/include

安装连接器

pip install mysql-connector

答案 6 :(得分:0)

请注意,连接到Django 1.11时,2.1.6连接器失败并出现NoneType错误。已在2.1.7中修复。

阅读:mysql-connector-python fails to work with django 1.11

答案 7 :(得分:0)

在macOS上,如果您使用Homebrew

$ brew install protobuf
$ export MYSQLXPB_PROTOC=/usr/local/opt/protobuf/bin/protoc
$ export MYSQLXPB_PROTOBUF_INCLUDE_DIR=/usr/local/opt/protobuf/include/
$ export MYSQLXPB_PROTOBUF_LIB_DIR=/usr/local/opt/protobuf/lib/
$ pip3 install mysql-connector