Python gRPC是否依赖libssl.so.1.1?

时间:2019-06-18 21:43:15

标签: pip conda grpc

  

Python gRPC是否需要libsso.so.1.1?

我之所以问是因为我能够使用 pip 在一个环境中安装和导入Python的gRPC。但是,在其他环境中使用 Conda 安装后,我无法导入模块。

再看一遍,我发现Conda安装中的site-packages/grpc/_cython/cygrpc.so需要libssl.so.1.1,而点子安装的版本不是这种情况。

1。使用Conda安装(由于缺少libssl.so.1.1而无法导入)

>>> import grpc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "../miniconda3/envs/myenv/lib/python2.7/site-packages/grpc/__init__.py", line 22, in <module>
    from grpc._cython import cygrpc as _cygrpc
ImportError: libssl.so.1.1: cannot open shared object file: No such file or directory

通过运行以下命令,我发现cygrpc.so需要libsso.so.1.1。同时,在pip安装的版本中为cygrpc.so运行相同的命令没有这种要求。

readelf -d cygrpc.so

Dynamic section at offset 0x1b1f38 contains 35 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libssl.so.1.1]
 ...

2。使用pip安装(成功)

>>> import grpc
>>>

1 个答案:

答案 0 :(得分:0)

我不知道grpcio在Conda上可用。构建和上传这些工件的人员与gRPC团队无关。如您所见,他们上传的最新版本是10月(1.16.1),而PyPI的版本是1.22。看来,无论是谁上传的,都没有注意多Linux的合规性。尽管我们在PyPI上的工件在libzlibcareslibcryptolibssl中静态链接,但它们似乎取决于用户在其上拥有那些共享库系统。