gpt4 book ai didi

python - 如何从 setuptools 安装程序 (setup.py) 中生成 python grpc 代码?

转载 作者:行者123 更新时间:2023-12-01 20:17:34 26 4
gpt4 key购买 nike

我们在存储库中有一些 gRPC 的原型(prototype)文件,我读到提交生成的代码并不好。所以我想我需要将生成作为包安装的一部分(例如 setuptools、setup.py)

但是,要生成 gRPC 代码,您需要首先根据 the docs 运行 pip install grpcio-tools 安装软件包。 。但setup.py的目的是自动下拉依赖项,例如grpcio-tools

那么有这样做的最佳实践吗?例如,如何从 setuptools 中生成依赖于另一个 python 包的代码?我是否最好只创建一个单独的 build.sh 脚本来手动 pip 安装并生成代码?或者我应该期望该软件包的用户已经安装了grpcio-tools

最佳答案

据我所知,“当前”最佳实践是:

  • pip 管理依赖项
  • setup.py 执行构建

执行“pip install”。几乎相当于执行“pip install -r requests.txt”+“python setup.py build”+“python setup.py install”。

这是一个自定义命令,可从 proto 文件生成 python 源代码:

class GrpcTool (Command):
def initialize_options(self):
pass

def finalize_options(self):
pass

def run(self):
import grpc_tools.protoc

proto_include = pkg_resources.resource_filename('grpc_tools', '_proto')

grpc_tools.protoc.main([
'grpc_tools.protoc',
'-I{}'.format(proto_include),
'--python_out=SOME_PATH/',
'--grpc_python_out=SOME_PATH/',
'SOME_PROTO.proto'
])

这是调用自定义 build_py 命令,如下所示:

class BuildPyCommand (build_py):
def run(self):
self.run_command('grpc')
super(BuildPyCommand, self).run()

注意 run 方法内部的导入。似乎 pip 在安装需求之前和之后多次运行 setup.py 。因此,如果您在文件顶部进行导入,则构建会失败。

关于python - 如何从 setuptools 安装程序 (setup.py) 中生成 python grpc 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52994857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com