python - 文件不在指定的任何路径中
问题描述
我想在当前目录和所有子目录中递归编译 protobuf 文件。我正在运行以下脚本:
D:\Code\cloudapi>for /R %i in (*) do python -m grpc_tools.protoc --python_out=. --proto_path=. %i
但我收到的唯一信息是以下错误:
D:\Code\cloudapi\third_party\googleapis\google\type\dayofweek.proto:文件不在使用 --proto_path(或 -I)指定的任何路径中。您必须指定包含此文件的 --proto_path。请注意,proto_path 必须是 .proto 文件名的精确前缀—— protoc 太笨了,无法确定两个路径(例如绝对路径和相对路径)何时相等(这比你想象的要难)。
这个问题有什么可能的解决方案吗?
解决方案
是的,您可以使用 windowsFOR
命令的选项来指向该文件夹。
像这样的东西应该工作:
for /R %i in (*) do python -m grpc_tools.protoc --python_out= %~di%~pi --proto_path= %~di%~pi %i
我猜您希望输出与源文件夹位于同一文件夹中。
我在这里所做的是使用 WindowsFOR
命令的可选扩展语法。如果你去for /?
,你可以看到更多的选择。
基本上被翻译成你的文件 %~di
的完整路径的驱动器号。是该文件夹的路径(不包括驱动器)。%i
%~pi
所以我已经在--proto_path
应该振作起来的参数上指定了这一点。我已经使用了相同的方法,--python_out
但您可能希望将其还原为.
使其进入父文件夹。
推荐阅读
- javascript - 如何将 Monaco 与 Vue.js 集成?
- javascript - 如何修复可访问性的空按钮?
- java - JOOQ store() 不返回 ResultSet
- usb - 如何在 imx 板启动之前为 usb0 设置 ip?
- c - 正确的输出,但 codechef 在提交代码时说错了
- database - 在 1 小时内选择范围 1 - POSTGRESQL
- wordpress - 每个分类术语的平均发布天数
- django - Django ImportError:没有名为“webapp_credentials”的模块
- r - 我的正态分布数据的方差如何等于零?一定有问题
- angular - 什么是“空!” 在打字稿中?