conda-forge或PyPI的Python包grpcio是否基于BoringSSL构建?
核心结论
版本≥1.38.1的官方预编译grpcio包(含PyPI官方wheel、conda-forge预构建版本)默认静态链接BoringSSL,不会调用系统自带的OpenSSL。只有自行编译时主动指定使用系统SSL的构建参数,才会动态链接系统OpenSSL。
验证方法
你可以通过以下三种方式自行确认当前安装的grpcio使用的SSL库:
- 方法1:查看内置构建参数
安装对应版本grpcio后执行以下代码:
import grpc print(grpc._grpcio_metadata.IGNORE_OPENSSL_INSTALLATION)
输出为True即代表当前版本是静态链接BoringSSL的预编译版本,会直接忽略系统OpenSSL。
- 方法2:检查二进制文件的动态链接依赖(仅适用于Linux、macOS系统)
先找到grpcio安装路径下的核心二进制文件,通常路径为Python第三方库目录下的grpc/_cython/cygrpc.cpython-xxx.so。- Linux系统执行命令:
ldd /path/to/your/site-packages/grpc/_cython/cygrpc*.so | grep -i ssl- macOS系统执行命令:
otool -L /path/to/your/site-packages/grpc/_cython/cygrpc*.so | grep -i ssl
如果没有输出libssl相关的依赖项,说明没有动态链接系统OpenSSL,使用的是静态嵌入的BoringSSL。
- 方法3:验证源码构建规则
如果是自行从源码编译grpcio,默认构建逻辑会自动拉取BoringSSL源码静态编译嵌入,只有主动添加环境变量GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1执行编译时,才会链接系统OpenSSL。
内容的提问来源于stack exchange,提问作者Dr. Fabien Tarrade
相关产品推荐
相关产品推荐

