히비스서커스의 블로그

[Ubuntu] 각종 에러 모음 (feat. openslide, apt-get, segmentation-model) 본문

Programming/Linux

[Ubuntu] 각종 에러 모음 (feat. openslide, apt-get, segmentation-model)

HibisCircus 2021. 7. 28. 14:52
728x90

 

ubuntu 환경에서 Docker로 가상환경을 만들고 Jupyter notebook으로 작업을 하던 중 openslide 라이브러리가 설치가 안되었다고 하여 설치 후 다음과 같은 에러 메시지를 맞이하였다.

 

OSError: libopenslide.so.0: cannot open shared object file: No such file or directory

 

stackoverflow를 찾아보니 다음과 같은 해결방안이 있었다.

https://github.com/openslide/openslide-python/issues/35

 

OSError: libopenslide.so.0: cannot open shared object file: No such file or directory · Issue #35 · openslide/openslide-python

I used to install openslide by "pip install openslide-python", but I got the error when I "import openslide", anyone knows what cause this problem, How can I fix it?

github.com

 

다음과 같이 3개를 다시 설치해주면 되었다.

$ sudo apt-get install openslide-tools
$ pip install openslide-python

 

 

apt-get install 명령어로 다운 받아야 하는 상황이 생겼다. 이를 위해 여러 가지 문제를 봉착하면서 알게 된 내용들을 쭈욱 정리해본다.

 

 

1. 주피터 노트북이 켜져있는 도커의 컨테이너에 접속하기

 

일단 주피터 노트북에서 명령어를 입력하기 보다는 터미널로 들어가는 것이 좀 더 수월하기에 도커의 컨테이너로 접속한다. 그러기 위해 주피터 노트북이 커져있는 컨테이너의 name을 확인해보자.

 

$ sudo docker ps -a

 

나타나는 컨테이너 목록 중 주피터 노트북이 커져있는 컨테이너의 이름이나 ID를 확인한다. (jupyter notebook 관련 명령어나 port 관련이 나오는 것이 현재 주피터 노트북이 커져있는 컨테이너일 확률이 높다.)

 

$ sudo docker attach (컨테이너 name or ID)

 

이제 컨테이너로 접속하였으니 위 3개의 명령어를 입력하여 설치를 해주면 정상적으로 작동이 된다.

 

간혹 아래와 같은 에러가 날 수 있다.

 

Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-bin_2.15-0ubuntu10.6_i386.deb 404 Not Found [IP: 91.189.91.14 80]

 

이는 apt-get이 최신화가 되지 않은 에러로 apt-get을 update해주면 잘 해결된다.

 

apt-get update

 

위의 명령어들을 입력하면 아래의 차이를 찾아보았다.

 

 

 

3. apt-get install vs pip install

 

어느 정도 감은 잡고 있었지만 이번 기회에 확실하게 잡고 간 내용이다. 

 

pip install로 설치할 시 파이썬 패키지들의 저장소인 PyPI(Python Package index)에서 패키지를 다운받는 것이고,

apt-get으로 설치할 시 우분투 저장소로부터 가져오는 것이다.

 

이 두 곳의 호스팅이 다른데 PyPI는 파이썬 언어를 만든 Python Software Foundation에서 호스팅한 것이고,

apt-get은 우분투 저장소는 우분투를 만든 Canonical에서 호스팅한 것이다. 

 

자세한 내용은 아래의 블로그를 참고하면 좋다.

https://bskyvision.com/686

 

[ubuntu+python] pip install과 apt-get install의 차이는? pip와 pip3는 뭐가 다르지? sudo란?

안녕하세요. 컴퓨터비전 블로그, 비스카이비전의 심교훈입니다. 평생 거의 윈도우만 사용하다 최근에 와서야 리눅스 운영체제(그 중 하나인 우분투)를 사용해보려고 하다보니 이것저것 궁금한

bskyvision.com

 

 

4. segmentation-model 에러

 

openslide-python 설치 후 segmentation-model 라이브러리를 설치하다가 또 다른 에러를 맞이하였다.

 

AttributeError: module 'keras.utils' has no attribute 'generic_utils'

 

위 문제 해결방법은 stackoverflow에서 답을 찾아 해결하였다.

https://github.com/qubvel/segmentation_models/issues/374

 

module 'keras.utils' has no attribute 'generic_utils' · Issue #374 · qubvel/segmentation_models

Hi, I'm trying to run multiclass segmentation (camvid).ipynb example and get an error after running the following block: import segmentation_models as sm Here is the error: --------------------...

github.com

 

에러가 발생한 path로 입력하여 그곳의 내용을 바꿔주면 되었다. 보통 설치가 된 path는 ~(환경에 따라 다름)/lib/python3.6/site-packages/efficientnet 으로 이동한다.

 

그 후 vi를 통해 __init__.py를 열고

 

$ vi __init__.py

 

 

아래의 내용을

# 71번 째 라인 쯤
keras.utils.generic_utils.get_custom_objects().update(custom_objects)

아래와 같이 수정해준다.

# 71번 째 라인 쯤
keras.utils.get_custom_objects().update(custom_objects)

 

그 후 실행하면 잘 된다!

 

 

위의 과정 모두 설치와 수정을 완료하였다면 라이브러리를 실행하였던 주피터 노트북 커널을 한 번 shutdown 시키고 실행해주는 것이 좋다. 

 

 

 

-히비스서커스-

728x90