首页 > 系统相关 >windows下python源码编译构建grpc【填各种坑】

windows下python源码编译构建grpc【填各种坑】

时间:2024-06-03 17:35:04浏览次数:30  
标签:package windows python 源码 PROVIDER DgRPC grpc

背景

  首先这是巨坑,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

相关文章

  • Python基础:在多个.py文件组成的项目中如何安全的使用文件路径(绝对路径安全,相对路径可
    在Python项目中使用相对路径时,路径的计算是基于当前执行脚本的位置,即当前工作目录(CurrentWorkingDirectory,CWD)。这通常是你从中启动Python解释器的目录。这种方式在简单脚本或当你直接从命令行运行单个脚本文件时行得通,但在较大的项目或多层目录结构中可能导致路径错误......
  • Python数据分析【Numpy系列】np.linspace()用法详解
    np.linspace()是NumPy库中一个非常有用的函数,它用于在指定的区间内生成等间距的样本值。这个函数非常适合在数值分析、数据可视化和信号处理等领域生成数据点。函数语法numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0)......
  • 校园圈子系统--自带校园跑腿功能,校园交友,校园陪玩,校园交友墙,地图找伴,二手市场等功能。
    一、需求分析在搭建校园论坛平台之前,我们需要进行详细的需求分析。这包括以下几个方面:1.用户需求我们需要了解目标用户群体的需求和喜好,包括学生的年龄层次、兴趣爱好、关注话题等。通过调查问卷、访谈等方式收集用户需求,为平台开发提供依据。2.功能需求根据用户需求,我们......
  • Python3 笔记:extend()、append() 和 +号 的区别
    1、extend()可以向一个列表中添加另外一个列表中的所有元素。list1=[1,2,3,4]list2=[3,4,5,6]list1.extend(list2)print(list1) #运行结果:[1,2,3,4,3,4,5,6]print(list2) #运行结果:[3,4,5,6]2、append()用于向列表末尾添加元素。list1=[1,2,3,4]li......
  • 利用python批量重命名(将「歌手名-歌名.mp3」更为「歌名-歌手名.mp3」)
    效果原始:修改后:python代码importosdefrename_files(directory):forfilenameinos.listdir(directory):if"-"infilenameandfilename.endswith(".mp3"):#分割文件名为歌手名和歌曲名parts=filename.rsplit("-......
  • Python - qiniu模块实例
    importqiniuimportrequestsimportjsonak='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'sk='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'###构建七牛的验证对象q=qiniu.Auth(ak,sk)#获取该账号下的域名列表getdomain_url="http://api.qiniu.com/domai......
  • python系列&AI系列:Python Traceback指南:异常代码排错利器
    PythonTraceback指南:异常代码排错利器PythonTraceback指南:异常代码排错利器TracebackTraceback示例Traceback包含的信息自定义TracebackTraceback的用处`Traceback`的应用示例总结PythonTraceback指南:异常代码排错利器当在Python中遇到错误时,Traceback(回溯)......
  • 用python制作贪吃蛇
    python介绍Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python是由GuidovanRossum在八十年代末和九十年代初,在荷......
  • 在 Windows 10 中全局安装 tree 命令
    在Windows10中全局安装tree命令的步骤如下:1.下载TreeforWindows工具包。可以从官方网站https://gnuwin32.sourceforge.net/packages/tree.htm下载最新版本的Binaries.zip压缩包。2.解压下载的Binaries.zip压缩包。在解压后的文件夹中,找到bin目录,里面有一个......
  • 今天分享一篇Python启动浏览器的文章
    1.首先是浏览器选择,因为我之前自己电脑测试,安装了Firefox浏览器,版本号:45.0.2。但是这个版本号的浏览器找不到对应的驱动,但是本人又不想卸载这个浏览器,所以转而使用谷歌浏览器进行自动化测试了。Firefox驱动下载地址:https://github.com/mozilla/geckodriver/releases,如果有需要的......