본문 바로가기
Python

[Python] Pandas 오프라인 설치 및 _bz2 오류 해결

by 윤팍 2021. 6. 16.

 

Python 라이브러리 오프라인 설치

오프라인/폐쇄망 환경에서 특정 라이브러리를 설치하기 위해선 인터넷 연결이 가능한 외부 컴퓨터에서 다운로드를 받아와야 합니다. 간단한 명령어로 특정라이브러리에 대한 목록 및 다운로드를 진행할 수 있습니다.

  1. 원하는 라이브러리를 다운받는다. 

         $ pip install pandas

  2. 다운로드 목록 및 다운로드 내용을 가져올 폴더로 이동.
  3. 현재 설치된 라이브러리을 리스트로 만든다.

         $ python pip freeze > requirements.txt

  4. 모듈 리스트를 다운로드 한다.

         $ python pip download -r requirements.txt

    - 위의 코드를 실행시키면 .whl 파일이 다운로드 된다.
  5. 다운로드 받은 폴더를 오프라인 서버에 옮긴다.
  6. 오프라인에서 파일 설치

         $ python -m pip install --no-index --find-links="./" -r requirements.txt

    - requirements.txt 에 있는 파일들이 일괄 설치된다.
  7. python -m pip install --no-index --find-links="./" pandas-1.1.2-cp38-cp38-manylinux1_x86_64.whl
    - 위처럼 requirements.txt 대신에 파일명을 써주면 개별 파일이 설치된다. 

bz2, _bz2 오류 해결

Pandas 를 설치하고 Import 를 하는 순간 bz2 모듈이 없거나 _bz2 모듈이 없다는 에러메세지가 나올때가 있습니다.

구글링을 통해 해결책을 찾아냈다.

 

해결방법은 다음과 같다.

먼저 bz2 라이브러리를 centos는 yum, ubuntu는 apt를 통해 설치해준다.

  CentOS > yum install bzip2-devel

  Ubuntu > apt-get install libbz2-dev

그후 Python을 다시 컴파일할 필요가 있는데 기존에 깔려 있는 버전에 맞춰서 컴파일 시켜주면 된다.

필자의 경우 Python3.8.7을 사용했기 때문에 아래와 같이 압축 파일을 받아주었다.

  $ wget https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tgz

 -기존에 Python 설치 파일이 있다면 그것을 사용해도 좋다.

 

해당 압축 파일을 tar 명령어로 풀어주고 해당 경로로 들어가 명령어를 순서대로 해준다.

  $ tar -zxvf Python-3.8.7.tgz

  $ cd Python-3.8.7

  $ ./configure --prefix=/app/python-3.8.7

  $ make && make install

--prefix 를 주어 기존에 설치되어있던 Python 폴더에 설치해주면 라이브러리를 새로 설치 안해줘도 된다.

컴파일 완료 후 버전에 맞는 "_bz2.cpython-38m-x86_64-linux-gnu.so" 파일을 다운받은 뒤 

/python_path/Python.3.8.7/lib/python3.8/lib/lib-dynload/ 에 넣어주면 해결이 된다.