【问题标题】:why would i get AttributeError when run grpc demo in python3.7.4为什么在 python3.7.4 中运行 grpc demo 时会出现 AttributeError
【发布时间】:2019-12-02 20:29:37
【问题描述】:

我安装了库: googleapis-common-protos 1.6.0 grpcio 1.22.0 grpcio 工具 1.22.0

我运行一个简单的演示,然后出现异常:

grpclib/grpcapi.py:1: 在 导入grpc /usr/local/lib/python3.7/site-packages/grpc/init.py:24:在 从 grpc 导入 _compression /usr/local/lib/python3.7/site-packages/grpc/_compression.py:17:在 NoCompression = cygrpc.CompressionAlgorithm.none E AttributeError: 模块 'grpc._cython.cygrpc' 没有属性 'CompressionAlgorithm'

我尝试了 grpcio==1.21.1 grpcio-tools==1.21.1,它不起作用。 但它适用于python2.7。但是我必须在 python 3.6+ 中运行它

这里是原型文件:

syntax = "proto3";

option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";

package demo;

service mrpc_service {
  rpc call (mrpc_request) returns (mrpc_reply) {}
}

message mrpc_request {
  string action = 1;
  string body = 2;
}

message mrpc_reply {
  string result = 1;
  string body = 2;
}

请帮忙,谢谢!

【问题讨论】:

    标签: python-3.x grpc-python


    【解决方案1】:

    grpcio 软件包的 C 扩展名似乎未正确安装。您可以发布您的pip 安装日志吗?另外,我想知道您使用的是什么操作系统?

    此错误可能需要更多上下文来调试。您可以考虑向 gRPC 存储库提交问题吗? https://github.com/grpc/grpc

    【讨论】:

    • 似乎 pytest 导致了这个问题。它通过直接在 python3 应用程序中运行来工作。
    【解决方案2】:

    终于,我找到了罪魁祸首; 我使用pytest,并添加pytest.ini如:

    [pytest]
    filterwarnings =
        error
        ignore::UserWarning
    

    删除,然后它工作。卧槽!

    【讨论】:

    • 注意你应该注意你的“error”和“ignore::UserWarning”的顺序是错误的。 filterwarnings 指令按从上到下的顺序处理,您的“ignore::UserWarning”将无效
    【解决方案3】:

    这似乎已在 pytest 5.3 或更高版本中得到修复 https://github.com/pytest-dev/pytest/issues/6314

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 2021-12-11
      • 1970-01-01
      • 2012-01-31
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      相关资源
      最近更新 更多