【问题标题】:No module named google.protobuf没有名为 google.protobuf 的模块
【发布时间】:2015-09-27 07:35:49
【问题描述】:

我正在努力实现 Google 的远大梦想。出于某种奇怪的原因,我不断得到

ImportError: 没有名为 google.protobuf 的模块

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

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

【问题讨论】:

  • 你 pip install google.protobuf 了吗?
  • 我做了“pip install protobuf”,但我仍然得到 ImportError: No module named google.protobuf after using "from google.protobuf import text_format" in python 2.7.6
  • 你的电脑有没有可能有两条蟒蛇?如果您确实直接从脚本文件夹中使用 pip
  • 我认为你正在做某事。我确实有多个 python 版本。直接从脚本文件夹中使用 pp 是什么意思?

标签: python installation protocols protocol-buffers deep-dream


【解决方案1】:

当我命令 pip install protobuf 时,我收到错误:

无法卸载“六”。这是一个 distutils 安装的项目,因此我们无法准确确定哪些文件属于它,这只会导致部分卸载。

如果你和我有同样的问题,你应该执行以下命令。

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

【讨论】:

    【解决方案2】:

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

    不确定这是否是错误以及在哪里报告。

    【讨论】:

      【解决方案3】:

      还有一种可能,如果你运行的是python 2.7.11或者其他类似的版本,

      sudo pip install protobuf
      

      没问题。

      但是如果你在anaconda环境中,你应该使用

      conda install protobuf
      

      【讨论】:

      • 如果我编译了protobuf 2.6.0源码,python是3.5怎么办?我在导入 caffe from .proto.caffe_pb2 import TRAIN, TEST File "/usr/local/lib/python3.5/dist-packages/caffe/proto/caffe_pb2.py", line 6, in <module> from google.protobuf.internal import enum_type_wrapper ImportError: No module named 'google.protobuf' 时遇到问题。
      • 我在bashrc中也导出了路径LD_LIBRARY_PATH=/usr/local/lib${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 脚本;我发现一些帖子/提交消息说 Google 在 2.6.0 中添加了对 Python 3 的支持,但我认为当时还没有完成,因为代码似乎只支持 Python 版本 1 或 2设置,3 不被接受。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        ...如果这对将来的任何人有帮助。

        【讨论】:

        • 谢谢!很好的提示
        • 救了我的命!非常感谢!
        • @WormHole 您可能使用的是 Python 2.7,它需要上述文件。 Google Protobuf 假设您使用的是 Python 3.x。至少这是我的理解。所以,不是错误 - 只是 Python 版本的烦恼。
        【解决方案6】:

        我用这个命令安装了 protobuf:

        conda install -c anaconda protobuf=2.6.1
        

        (你应该检查 protobuf 的版本)

        【讨论】:

          【解决方案7】:

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

          $ sudo pip uninstall protobuf
          $ sudo pip uninstall tensorflow
          

          然后重新安装它:pip installation of Tensorflow。目前,这是:

          # 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
          

          【讨论】:

            【解决方案8】:

            就我而言

            1. 下载源代码,编译安装:

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

              $ python setup.py build
              $ python setup.py install'
              

            不确定这是否对您有帮助..

            【讨论】:

            • 我想补充一点,对于某些系统,第 1 步可能已经为您完成了。您只需要执行第 2 步。在我的情况下,我必须下载整个 protobuf zip 文件并查找 python 子文件夹。
            • 想要补充一点,存储库已更改为现在需要 ./autogen.sh 才能运行 ./configure。
            【解决方案9】:

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

            pip 实际上是指向下载和安装包的脚本的链接。

            两种可能的解决方案:

            1. 转到 $(PYTHONPATH)/Scripts 并从该文件夹运行 pip 以确保 你使用了正确的点子
            2. 为指向 $(PYTHONPATH)/Scripts/pip 的 pip 创建别名,然后运行 ​​pip install

            你怎么知道它有效? 很简单,如果使用新的 pip 则安装成功,否则安装成功

            【讨论】:

              猜你喜欢
              • 2016-12-05
              • 1970-01-01
              • 2023-04-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-03-28
              • 2017-12-30
              相关资源
              最近更新 更多