太原做網(wǎng)站需要多少錢阿里巴巴運(yùn)營(yíng)
?
序言
- 首先通過(guò)protoc --version查看protoc版本,避免pb文件生成方和使用方版本不一致
1. 生成pb.cc
-
生成命令
protoc -I=${proto_file_dir} --cpp_out=${pb_file_dir} *.proto
參數(shù): -I表示 proto 文件的路徑; --cpp_out 表示輸出路徑; 最后一個(gè)參數(shù)表示需要被編譯為 pb.h 和 pb.cc 文件的 proto 文件, *.proto 表示 -I 路徑下的所有 proto 文件
2. 生成pb.py
-
生成命令
protoc -I=. --python_out=. person.proto # 單個(gè)proto文件生成pb2.py文件 protoc -I=. --python_out=. *.proto # 所有proto文件生成pb2.py文件
-
proto包含:如果重新拷貝了所有.proto文件到同一目錄下生成pb.py文件,請(qǐng)記得修改proto依賴路徑,修改前后如下圖


3. 導(dǎo)入pb2.py文件使用
-
同級(jí)目錄
import dir.test_pb2 as test__pb2 或 from dir import test_pb2 as test__pb2
-
上級(jí)目錄:方法1,使用sys.path.append()
import sys sys.path.append('/path/to/another/directory') import another_module
說(shuō)明:sys.path是Python的搜索路徑列表,它包含了模塊搜索路徑。我們可以向sys.path列表中添加另一個(gè)目錄,使得Python可以在該目錄中尋找模塊文件
-
上級(jí)目錄:方法2,使用相對(duì)路徑
from ..another_directory import another_module
說(shuō)明:…表示上一級(jí)目錄
-
上級(jí)目錄:方法3,使用importlib
import importlib scenario_pb2 = importlib.import_module(".scenario_pb2", "protos") scenario_pb2 = importlib.import_module("protos.scenario_pb2")
?
【參考文章】
[1]. importlib用法
[2]. 如何從其他目錄導(dǎo)入py文件, 推薦
[3]. linux下配置protobuf并編譯生成pb.py文件
[4]. 從用protoc生成的pb2.py中反向工程.proto文件
created by shuaixio, 2024.03.06