【问题标题】:How can I use protocol buffers for Python on windows?如何在 Windows 上使用 Python 的协议缓冲区?
【发布时间】:2021-01-26 02:29:09
【问题描述】:

我一直在尝试在我的 Python 程序中使用协议缓冲区,但无法让它工作。我正在运行 Windows 8 机器并尝试过 Python 2.7.6 和 Python 3.3。 我下载了 Python 的二进制协议缓冲区编译器,并使用它从我的 myProto.proto 文件生成 myProto_pb2.py,但是当我运行 Python 程序时出现以下错误:

从“import myProto_pb2”行中,我在使用来自协议缓冲区版本 2.5 的 Python 2.7.6 时收到以下错误:

from google.protobuf import descriptor as _descriptor
  ImportError: No module named google.protobuf

如何在 Windows 上从 Python 正确安装和运行协议缓冲区?

【问题讨论】:

    标签: python protocol-buffers protoc


    【解决方案1】:

    如何在 Windows 上从 Python 正确安装和运行协议缓冲区?

    与任何其他软件包一样,如果您想安装它,您必须实际安装它。如果您只是尝试使用位于源目录中的包运行,它可能可以工作,但大多数包不能这样工作;你往往会得到顶级包importing 之类的东西,然后当它尝试import 其他东西时失败了几行……正如你所看到的那样。

    我相信 GoogleCode 的主要下载包中有一个可安装包。至少它适用于源包,如果不是 win32 包的话。在python 目录内有完整的安装说明。基本上:

    C:\path\to\protobuf-2.5.0> cd python
    C:\path\to\protobuf-2.5.0\python> python setup.py build
    C:\path\to\protobuf-2.5.0\python> python setup.py test
    C:\path\to\protobuf-2.5.0\python> python setup.py install
    

    但是,如果 win32 预构建包没有提供它,或者您不再拥有它,或者您只是更喜欢安装 PyPI,那么它也可以使用 there。所以,假设you've got pip installed

    pip install protobuf
    

    【讨论】:

    • 谢谢!它似乎可以工作......出于某种原因,我可以从像 Cygwin 这样的命令提示符运行我的 Python 程序,但是从默认空闲编辑器启动它时,我仍然会遇到导入错误。
    • @user2399973:我猜你实际上已经安装了两个 Python ——可能是一个 cygwin Python 和一个原生的 win32 Python。你已经将protobuf正确安装到cygwin Python中,所以在命令行运行cygwin Python时它可以工作,但是你还没有将它安装到本机Python中,所以当你运行本机Python的IDLE时它不起作用.但实际上,这只是一个猜测。发布一个新问题,描述你的设置,显示实际的错误信息(如果有的话,带有回溯)而不是仅仅描述它等等。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多