如何在protoc编译生成的Python代码中添加版权前言?
解决Protobuf生成Python文件添加版权声明的方案
一、推荐方案:构建流程中自动注入版权声明
- 不要手动修改生成的
foo_pb2.py——DO NOT EDIT!提示的核心是避免人工修改后被重新编译覆盖,而非禁止自动化流程的批量修改。 - 在wheel构建环节新增自动化步骤:protoc编译完成后,用脚本在生成文件头部插入版权声明。示例Python脚本:
import fileinput COPYRIGHT_LINE = "# Copyright (c) 2024 charlestoncrabb. All Rights Reserved.\n" TARGET_FILE = "foo_pb2.py" with fileinput.input(TARGET_FILE, inplace=True) as f: # 读取第一行并插入版权声明 first_line = next(f) print(COPYRIGHT_LINE.rstrip()) print(first_line.rstrip()) # 写入剩余内容 for line in f: print(line.rstrip()) - 将该脚本集成到你的构建配置中(比如
setup.py的build阶段,或pyproject.toml的构建钩子),确保每次编译后自动执行,既不会丢失修改,也符合自动化维护规范。
二、备选方案:在原始proto文件中添加版权注释
- 在
foo.proto顶部添加版权说明:// Copyright (c) 2024 charlestoncrabb. All Rights Reserved. syntax = "proto3"; // 你的proto定义内容... - 编译后的
foo_pb2.py不会直接将该注释放到文件头部,但原始proto文件可作为版权归属的依据,建议将foo.proto一并纳入Python包的分发内容中。
关于DO NOT EDIT!提示的说明
- 该提示针对的是手动修改生成文件的行为,因为重新编译proto会完全覆盖人工修改的内容。通过自动化脚本在构建流程中注入声明不属于此范畴,不会引发维护问题。
内容的提问来源于stack exchange,提问作者charlestoncrabb
相关产品推荐
相关产品推荐

