안녕하세요?
저는 프로젝트에서 Protobuf 3.19를 사용하고 있었습니다. 그런데, 최신 Streamlit 부터는 Protobuf 의 디펜던시가 3.20>= 으로 되면서, 3.20 으로 업그레이드 테스트를 진행하던 중 아래와 같은 에러를 마주해서 해결한 방법에 대해서 작성합니다.
사실.. 3.19에서 Protobuf 최신 버전인 4.x 로 업그레이드를 하고 싶었지만, App trace 를 위해서 사용하는 Jaeger(https://www.jaegertracing.io/)에서 Protobuff 4.x를 지원하지 않아서 3.20으로 업그레이드를 했습니다.
Protobuf
Protobuf에 대한 자세한 설명은 생략합니다..
Protobuf / Jaeger / Opentelemetry
Jaeger가 Protobuf 4.x를 지원하지 않으면서, Opentelemetry에서도 더이상 Jaeger를 지원하지 않는 것으로 수정 됐습니다..
그렇기 때문에, Jaeger를 다른 것으로 바꾸는 것보다는 Streamlit 에서 지원하는 3.20으로 변경하기로 했습니다.
Mac(M1칩)에서 사용하던 3.19를 3.20으로 업그레이드 후 grpc도 업그레이드 하여 테스트 하던 중 아래와 같은 에러를 만났습니다.
ImportError: dlopen(~~~~/miniconda3/envs/python38/lib/python3.8/site-packages/grpc/_cython/cygrpc.cpython-38-darwin.so, 0x0002): symbol not found in flat namespace '_CFRelease'
인터넷에 찾은 방법데로, 기존 패키지 삭제 후 아래 명령어와 함께 재설치를 진행하여 성공적으로 설치 및 실행이 되는 것을 확인 했습니다.
# 설치된 패키지 삭제
$ pip uninstall grpcio
# 재설치
$ pip install grpcio==1.48.2 --no-binary :all: --no-cache-dir
3.19에서 4.x로의 업그레이드 같은 경우는, 호환성이 깨지면서 많은 부분을 고려해야 하지만, 3.19 -> 3.20의 경우에는 마이너 버전 업그레이드이기 때문에, 별다른 수정 없이 바로 실행이 되었습니다.
'개발 > ETC' 카테고리의 다른 글
[LiteLLM] OpenAI format 커스텀 LLM Agent 만들기 (0) | 2024.04.17 |
---|---|
Budibase - No Code Platform (0) | 2024.01.30 |