首先,本地计算机上安装了protobuf。我的电脑是mac电脑。最开始使用命令brew install protobuf执行安装。安装后版本信息如下:

qqq@qqqdeMacBook-Pro ~ % protoc --version
libprotoc 35.1

然后,按照readme文档运行程序
在这里插入图片描述
报错,信息如下:
在这里插入图片描述
No module named ‘statefun.types_pb2’ 意思是statefun文件夹下没有types_pb2这个文件。这个文件是protobuf根据.proto生成的python文件。然后我们注意到存在这么一个文件generte-dev-protos.sh,根据文件内容,我们可以知道该sh是生成py文件的脚本。其中,.proto文件根据脚本内容可以知道是在statefun-sdk-protos下。
在这里插入图片描述
执行脚本,生成pb2文件
在这里插入图片描述
继续执行python -m unittest tests报错如下:
在这里插入图片描述
在google.protobuf文件夹下没有runtime_version文件。
解决办法: 先使用命令pip3 install --upgrade protobuf。然后在venv/lib/python3.9/site-packages/google/protobuf中找到runtime_version文件。复制到别的地方备份。同样还有internal中的builder文件也备份一下。然后执行pip3 install protobuf==3.19.0。这时将刚才备份的文件复制到对应的文件位置即可。

再次执行 python -m unittest tests,报错:
在这里插入图片描述
这个意思是说,**生成的pb2文件的protobuf版本和运行时的protobuf版本不匹配。**生成pb2文件的版本是我的电脑的protobuf的版本,就是最开始查看的版本。但是python中protobuf的版本是3.19.0(setup.py中的要求为 install_requires=[‘protobuf>=3.11.3,<4.0.0’],)。
在这里插入图片描述
我这里是电脑中的版本太高了,所以重新下载。
执行如下命令:

qqq@qqqdeMacBook-Pro ~ % brew uninstall protobuf
Uninstalling /opt/homebrew/Cellar/protobuf/35.1... (373 files, 17.7MB)
==> Autoremoving 1 unneeded formula:
abseil
Uninstalling /opt/homebrew/Cellar/abseil/20260107.1... (806 files, 12.8MB)
qqq@qqqdeMacBook-Pro ~ % brew search protobuf
==> Formulae
protobuf                   protobuf@29 (deprecated)   swift-protobuf
protobuf-c                 protobuf@3 (disabled)
protobuf@21 (disabled)     protobuf@33

==> Casks
protopie
qqq@qqqdeMacBook-Pro ~ % brew install protobuf@33
✔︎ JSON API packages.arm64_sequoia.jws.json           Downloaded   15.2MB/ 15.2MB
==> Would install 1 formula:
protobuf@33
==> Would install 1 dependency for protobuf@33:
abseil
......

下载完成后,重新生成pb2文件:
在这里插入图片描述
可以看到版本一致。继续执行python -m unittest tests。执行成功
在这里插入图片描述

更多推荐