背景
首先这是巨坑,pip install grpcio和pip install grpcio_tools的方式,因为公司的库里没有,且申请入库复杂,因此只能通过源码构建。
思路
第一步,应该是要去找grpc的源码,公司是有源码的,也可以在PIPY上找,比如我需要1.41.1的grpc版本,就如下地址 https://pypi.org/project/grpcio/1.41.1/#files,找grpcio-1.41.1.tar.gz 这个包下载解压。
第二步,如果你直接执行python setup.py install,会出现非常多的报错。本篇帖子就是专门解决这个第二步的问题。
问题出现原因
首先,grpc跟很多包不一样,他底层依赖C,源码构建的时候是会带着一些C文件进行编译的,也需要C的编译器,比如CMake这种。
其次下载官方的包里面,会有一个文件夹third_party,里面会有很多空文件夹,都是没有东西的,巨坑。
环境准备
我使用的是CMake1.8以上版本就行,然后vs2017。
首先包下面直接运行python setup.py install,会有缺XXX包的报错,都需要根据这个帖子 https://www.cnblogs.com/judes/p/15437731.html 去对应版本的github上下载包并安装,一个一个下,也就十几个。
解决完这个以后,会有什么缺C++的,缺头文件的都是没有C++的环境,需要你安装下载Vs2017,并把安装组件Cmake那个勾上,配置一份环境变量,我自己还本地去官网装了一份Cmake,也配个环境变量。有报啥错就去搜一下,配置一下就行(可能会很多)。
然后在grpc的文件夹新建一个run.bat执行如下语句(我之前用CMake脚手架配置试了很多都不行,不知道为什么)
cd cmake mkdir build cd build cmake ../../ -DgRPC_INSTALL=ON\ -DgRPC_CARES_PROVIDER=package \ -DgRPC_PROTOBUF_PROVIDER=package \ -DgRPC_SSL_PROVIDER=package \ -DgRPC_ZLIB_PROVIDER=package \ -DgRPC_RE2_PROVIDER=package \ -DgRPC_ABSL_PROVIDER=package \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_VERBOSE_MAKEFILE=ON
这里我跟他们不一样,他们使用的指定vs版本的我会报错,但这个指令执行完确实出sln文件了,我也不知道具体原因,懂的可以告诉我一下。然后同这个帖子的后续 https://www.cnblogs.com/judes/p/15437731.html
注意生成以后的文件的include部分,要去grpc包下的进行覆盖,同样文件选择跳过。
再执行一遍python setup.py install,这个编译很长时间可能有8分钟。
会出个什么.egg的python蛋,再pip show grpcio,发现有就说明OK啦
注意
第三方组件我只装了perl,装一下并配置环境变量即可,并没有用到什么go之类的,可能他们很多是grpc的版本不一样,或许是python构建不需要其他的,我不太确定
标签:package,windows,python,源码,PROVIDER,DgRPC,grpc From: https://www.cnblogs.com/immersed-in-the-deep-sea/p/18229313