1

我用python3创建了一个virtualenv。在虚拟环境中,我的文件夹中有 2 个原始文件以及 nanopb 包。结构是

.
├── api.pb
├── api.proto
├── bin
├── compile.sh
├── include
├── lib
├── nanopb-0.4.2-linux-x86
└── types.proto

作为第一步,我使用命令将 types.proto 和 api.proto 编译成 api.pb

./nanopb-0.4.2-linux-x86/generator-bin/protoc -I=./nanopb-0.4.2-linux-x86/generator/proto -I=. api.proto -o api.pb

生成 pb 文件后,我执行以下命令,

python nanopb-0.4.2-linux-x86/generator/nanopb_generator.py /home/ankit/Desktop/api/venv-proto-3/api.pb

这给出了以下错误

(venv-proto-3) ankit@ankit-desktop:~/.../api/venv-proto-3$ python nanopb-0.4.2-linux-x86/generator/nanopb_generator.py /home/ankit/Desktop/api/venv-proto-3/api.pb
Writing to api.pb.h and api.pb.c
Traceback (most recent call last):
  File "nanopb-0.4.2-linux-x86/generator/nanopb_generator.py", line 2122, in <module>
    main_cli()
  File "nanopb-0.4.2-linux-x86/generator/nanopb_generator.py", line 2034, in main_cli
    os.makedirs(os.path.dirname(path), exist_ok=True)
  File "/home/ankit/Desktop/api/venv-proto-3/lib/python3.5/os.py", line 241, in makedirs
    mkdir(name, mode)
FileNotFoundError: [Errno 2] No such file or directory: ''
(venv-proto-3) ankit@ankit-desktop:~/.../api/venv-proto-3$ 

知道我在这里做错了什么。对protobuf来说很新。

谢谢

4

1 回答 1

0

抱歉,这是 0.4.2 版本中的错误。作为一种解决方法,您可以--output_dir=.像 Azeem 建议的那样添加。

我已将其添加到此处的问题跟踪器中:https ://github.com/nanopb/nanopb/issues/553

我错过了单元测试中非常基本的案例,这很愚蠢。

于 2020-06-27T18:22:28.783 回答