슬기로운 에러 생활

[bentoml] module not found error: no module named

vhrehfdl 2021. 8. 30. 13:56

* 에러 원인

- bentoml은 service.py와 builder.py로 구분한다.

builder.py에서 KoBERT+CRF모델을 사용했는데 외부 모듈을 사용했다.

그리고 service.py에서 KoBERT+CRF를 artifact에 매핑한 것을 가져와 사용했는데 자꾸 외부 모듈을 찾을 수 없다는 에러가 발생했다.

나는 단순히 service.py는 builder.py에서 pack한 모델을 가져와서 사용하면 되는 줄 알았는데 service.py에도 외부 모듈 import하는게 필요하다.

그 import 한 것을 service.py 내부 코드에서 직접 사용하지 않더라도 넣어줘야 문제가 해결이된다.

 

 

* 해결 방법

from utils.net import KobertCRF
from utils.pad_sequence import keras_pad_fn
from utils.utils import Config
from utils.vocab_tokenizer import Tokenizer

해당 외부 모듈을 사용했는데 service.py에서 위의 메서드를 직접 사용하는 부분은 없었다.

아마 model을 불러오는 과정에서 위의 메서드를 사용하기 때문에 직접적으로 사용하지 않아도 필요한 것으로 생각된다.

에러가 뭔가 직접적인지 않아 찾기 너무 힘들었는데 그래도 좋은 경험이 되었다.

 

 

* 추가 해결 방법

위에처럼 해도 인식을 못 하는 경우가 있었다...

확인해보니 로컬 python 모듈로 인식을 못하는 거였다.

utils 폴더 아래에 __init__.py를 넣어줘서 utils라는 폴더 자체를 로컬 파이썬 모듈로 인식하게 바꾸어줘야한다.

간단한 에러였는데...  그리고 이거 파이썬 3점대 버전에서는 문제없다고 했는데.. 왜 에러가 발생한거지!??!