据我所知,“当前”的最佳做法是:
执行“点安装”。几乎等同于执行“pip install -r requirements.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 几次。因此,如果您在文件顶部进行了导入,则构建将失败。