关于python:没有名为google.protobuf的模块

No module named google.protobuf

我正在尝试执行Google的梦想。 由于某些奇怪的原因,我不断

ImportError: No module named google.protobuf

尝试导入protobuf之后。 我已经使用sudo install protobuf安装了protobuf。 我正在运行python 2.7 OSX Yosemite 10.10.3。

我认为这可能是部署位置的问题,但我在网上找不到任何有关它的信息。 当前正在部署到/usr/local/lib/python2.7/site-packages。

  • 您是否安装了google.protobuf?
  • 我做了" pip install protobuf",但仍然收到ImportError:在python 2.7.6中使用" from google.protobuf import text_format"后,没有名为google.protobuf的模块
  • 您的计算机上是否有两个Python? 如果确实从脚本文件夹直接使用pip
  • 我想你正在做某事。 我有多个python版本。 直接从scripts文件夹使用pp是什么意思?


还有一种可能,如果您正在运行python 2.7.11或其他类似版本,

1
sudo pip install protobuf

还可以

但是,如果您在anaconda环境中,则应使用

1
conda install protobuf

  • 如果我已经编译了protobuf 2.6.0源并且python是3.5会怎样?我在导入caffe from .proto.caffe_pb2 import TRAIN, TEST File"usrlocallibpython3.5dist-packagescaffeprotocaffe_pb2.py", line 6, in from google.protobuf.internal import enum_type_wrapper ImportError: No module named google.protobuf时遇到问题。
  • 我也已将路径导出到bashrc LD_LIBRARY_PATH=usrlocallib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}中,我不知道是什么原因
  • 为什么我必须对此特定软件包进行conda install而不是与其他软件包一起使用的pip install
  • @ S.EB我与Protobuf 2.6.1处于类似情况,从我从测试中收集到的信息来看,编译器本身是不向后兼容的(例如,Protobuf 3.xx中的protoc无法编译Protobuf 2中创建的.proto文件。介意),但库API(包括Python接口)是向后兼容的。我能够成功使用pip的最新protobuf软件包与使用专为Protobuf 2设计的接口的设备进行通信。
  • @ S.EB另外,不要尝试使用Protobuf 2.6.X附带的python接口,它似乎是为Python 2制作的,它不能与任何Python 3脚本一起使用; Ive发现了一些帖子/提交消息,说Google在2.6.0中添加了对Python 3的支持,但我认为当时还没有完成,因为该代码似乎仅支持安装版本1或2的Python版本3。不被接受。


site-packages目录中找到google目录(当然,对于正确的后一个目录)并手动创建(空)__init__.py对我来说解决了此问题。

(请注意,此目录中是protobuf目录,但是我的Python 2.7安装不接受新样式的软件包,因此即使将该文件夹识别为软件包文件夹,也需要使用__init__.py(即使为空)。)

...以防将来对任何人有帮助。

  • 谢谢!很棒的提示
  • 为我解决了这个问题。谢谢!
  • 救了我一命!谢谢一群!
  • 这是Google包中的错误吗?
  • @WormHole您可能正在使用Python 2.7,该文件需要注明的文件。 Google Protobuf假定您使用Python3.x。至少这是我的理解。因此,不是bug-只是Python版本的烦恼。


就我而言

  • 下载源代码,编译并安装:

    1
    2
    3
    4
    $ ./configure
    $ make
    $ make check
    $ sudo make install`
  • 对于python,我在源代码下找到了它的文件夹(python),并运行了命令:

    1
    2
    $ python setup.py build
    $ python setup.py install'
  • 不知道这是否可以帮助您。

    • 有用的谢谢:)
    • 我想补充一点,对于某些系统,步骤1可能已经为您完成。您只需要执行步骤2。就我而言,我必须下载整个protobuf zip文件并寻找python子文件夹。
    • 要补充说明,存储库已更改为现在需要./autogen.sh,然后才能运行./configure。


    当我尝试使用Tensor Flow时出现了相同的错误消息。解决方案只是卸载Tensor Flow和protobuf:

    1
    2
    $ sudo pip uninstall protobuf
    $ sudo pip uninstall tensorflow

    并重新安装:Tensorflow的pip安装。当前是:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Ubuntu/Linux 64-bit, CPU only:
    $ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl

    # Ubuntu/Linux 64-bit, GPU enabled:
    $ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl

    # Mac OS X, CPU only:
    $ sudo easy_install --upgrade six
    $ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0rc0-py2-none-any.whl

    当我命令pip install protobuf时,出现错误:

    Cannot uninstall 'six'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

    如果您遇到与我相同的问题,则应执行以下命令。


    pip install --ignore-installed six
    sudo pip install protobuf


    根据您的评论,您有多个版本的python
    可能发生的是,您使用anthor python的pip安装软件包

    pip实际上是链接到下载和安装您的软件包的脚本。

    两种可能的解决方案:

  • 转到$(PYTHONPATH)/ Scripts并从该文件夹运行pip,这样可以确保
    您使用正确的点
  • 创建别名以指向指向$(PYTHONPATH)/ Scripts / pip的pip,然后运行pip install
  • 您怎么知道它有效?
    如果使用新的点,则很简单,将成功安装该软件包,否则该软件包已安装


    我在项目文件中有google.py文件时遇到了这个问题。
    复制非常容易。
    main.py:import tensorflow as tf
    google.py:print("Protobuf error due to google.py")

    不知道这是否是一个错误以及在哪里报告。


    就我而言,MacOS具有权限控制。
    sudo -H pip3 install protobuf


    我使用以下命令安装了protobuf:

    1
    conda install -c anaconda protobuf=2.6.1

    (您应检查protobuf的版本)