【发布时间】:2022-07-27 00:44:22
【问题描述】:
我有我的.proto。文件夹workspace_directory/sub_directory/proto_files中定义的文件。
当我跑步时:
protoc --python_out=workspace_directory -I workspace_directory/sub_directory/proto_files workspace_directory/sub_directory/proto_files/*
输出的python代码是在workspace_directory/proto_files中生成的,这正是我想要的。
我的主要目标是在 Python 中将该命令作为构建脚本的一部分运行,因此我尝试使用 subprocess.run() 来实现这一目标。在 Python 中我运行:
subprocess.run(shlex.split("protoc --python_out=workspace_directory -I workspace_directory/sub_directory/proto_files workspace_directory/sub_directory/proto_files/*"))
我明白了
无法使 proto 路径相对:workspace_directory/sub_directory/proto_files/*:没有这样的文件或目录
其他一些注意事项:
-
workspace_directory是完全限定路径。就像/home/user/workspace_directory,所以我不认为我应该有任何相对路径问题。 - 我使用了
shlex.split(),所以我可以复制/粘贴命令,以确保它尽可能准确。
在使用subprocess 模块时感觉好像遗漏了什么,但似乎看不到。
【问题讨论】:
-
您是否正确使用
shlex.split? resource -
@Dean 是的,我相信是的。那里没有单引号,所以它是一个非常直接的拆分。我也尝试过没有
shlex.split()。我发布的内容是否让您认为shlex.split()调用不正确?
标签: python subprocess protocol-buffers protoc