【问题标题】:nanopb-generator.py gives error "makedirs() got an unexpected keyword argument 'exist_ok'"nanopb-generator.py 给出错误“makedirs() 得到了一个意外的关键字参数‘exist_ok’”
【发布时间】:2020-10-17 10:57:42
【问题描述】:

我用 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 来说很新。

谢谢

【问题讨论】:

  • 试试:/&lt;path&gt;/nano_generator.py --output_dir=. /&lt;path&gt;/api.pb

标签: protocol-buffers nanopb


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
相关资源
最近更新 更多