父目录中的 'Protoc' 命令输出 python_out 目录中的整个源目录
'Protoc' command in a parent directory outputs entire source directory in the python_out directory
我有一个名为 protos
的目录,其中包含一个 .proto
文件,但最终会包含多个文件。该目录有一个名为 app
的同级目录,我想在其中转储构建的 grpc
python 文件。
我正在尝试编写一个简单的 bash 脚本,它将调用 protoc
命令并在 protos
中构建 .proto
文件,并将构建的文件输出到app
下面是 tree
我放置每个文件的位置。
├── build_protos.sh
└── trainingInstance (root module directory)
|
├── app
│ ├── app.py
| ├── (where I'd like my built files to go)
| |
| └──trainingInstance
| └──protos
| └──(where the built files actually go)
|
└── protos
└── TrainingService.proto (what I'd like to compile)
当我 运行 build_protos.sh
时,文件 TrainingService.proto
被检测到并被构建,但不是将构建的文件放入 ...trainingInstance/app/<file>
,而是将它放在...trainingInstance/app/trainingInstance/protos/<file>
(见上文)。
我以为我已经通过将 proto_path
显式设置为 protos
解决了这个问题,但它似乎并不关心这两种方式。下面是我的 build_protos.sh
文件:
#!/bin/bash
working_dir=$(pwd)
proto_dirs=($(pwd)/trainingInstance)
for dir in $proto_dirs
do
srcdir=$dir/protos #./trainingInstance/protos
destdir=$dir/app #./trainingInstance/app
echo Building $dir protos...
python3 -m grpc_tools.protoc\
-I $working_dir\
--proto_path=$srcdir\
--python_out=$destdir\
--grpc_python_out=$destdir\
$srcdir/*.proto #./trainingInstance/protos/*.proto
done
那么有谁知道如何阻止 protoc 在输出目录中创建这些反射目录?感谢任何帮助。
在发布这个问题后不到 5 分钟(在之前玩了一个小时的脚本之后),我已经解决了我自己的问题:指向我的工作目录的 -I
标志强制protoc
以这种方式构建文件,因为它旨在将不同的 .proto
包分开。此问题已通过完全删除 -I
标志得到解决。
我觉得我应该把它留在这里以防其他人遇到类似的问题。
我有一个名为 protos
的目录,其中包含一个 .proto
文件,但最终会包含多个文件。该目录有一个名为 app
的同级目录,我想在其中转储构建的 grpc
python 文件。
我正在尝试编写一个简单的 bash 脚本,它将调用 protoc
命令并在 protos
中构建 .proto
文件,并将构建的文件输出到app
下面是 tree
我放置每个文件的位置。
├── build_protos.sh
└── trainingInstance (root module directory)
|
├── app
│ ├── app.py
| ├── (where I'd like my built files to go)
| |
| └──trainingInstance
| └──protos
| └──(where the built files actually go)
|
└── protos
└── TrainingService.proto (what I'd like to compile)
当我 运行 build_protos.sh
时,文件 TrainingService.proto
被检测到并被构建,但不是将构建的文件放入 ...trainingInstance/app/<file>
,而是将它放在...trainingInstance/app/trainingInstance/protos/<file>
(见上文)。
我以为我已经通过将 proto_path
显式设置为 protos
解决了这个问题,但它似乎并不关心这两种方式。下面是我的 build_protos.sh
文件:
#!/bin/bash
working_dir=$(pwd)
proto_dirs=($(pwd)/trainingInstance)
for dir in $proto_dirs
do
srcdir=$dir/protos #./trainingInstance/protos
destdir=$dir/app #./trainingInstance/app
echo Building $dir protos...
python3 -m grpc_tools.protoc\
-I $working_dir\
--proto_path=$srcdir\
--python_out=$destdir\
--grpc_python_out=$destdir\
$srcdir/*.proto #./trainingInstance/protos/*.proto
done
那么有谁知道如何阻止 protoc 在输出目录中创建这些反射目录?感谢任何帮助。
在发布这个问题后不到 5 分钟(在之前玩了一个小时的脚本之后),我已经解决了我自己的问题:指向我的工作目录的 -I
标志强制protoc
以这种方式构建文件,因为它旨在将不同的 .proto
包分开。此问题已通过完全删除 -I
标志得到解决。
我觉得我应该把它留在这里以防其他人遇到类似的问题。