본문 바로가기
Python

TypeError: Descriptors cannot not be created directly (protoc >= 3.19.0) 해결하기

by bryan.oh 2022. 6. 20.
반응형
TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0. in Python

 

이러한 오류는 보통 Tensorflow, Tensorboard, Tritonclient 등등의 버전protobuf 의 버전이 맞지 않아서 발생합니다.

위에 저 빨간글씨대로 해결을 할 수도 있지만,

1번은 protobuf 의 버전을 낮추는 방법이고,
2번은 딱봐도 안좋은 방법입니다 ㅋ

버전을 낮추기 보다는 Tensorflow 등의 버전을 올리는게 나을거 같은데요.

부득이하게 버전을 올릴 수 없다면 아래 방법2로 해결해야겠지만, 방법1이 (저에게는) 맞는 방법인듯 합니다.

 

방법 1

TensorFlow 나 PyTorch 버전을 올립니다.

예를들면, Tensorflow 는 2.9.1 이상
pip install tensorflow==2.9.1

tritonclient 는 2.22.3 이상으로 install 

그 외 다른 library는 구글링 해보면 호환되는 버전이 나올겁니다. 

 

방법 2

설명에 나와있듯이 protobuf 버전을 3.20.x 버전으로 재설치합니다.

pip install –upgrade protobuf<=3.20.1

또는

pip install protobuf<=3.20.1 --force-reinstall

 

 

728x90
반응형

댓글