You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:45:07