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