본문 바로가기
IT 기술/개발환경_유틸 관련 팁

[Python 개발환경] pip 설치/사용법

by 땅뚱 2018. 9. 26.

pip 에 대해서 얘기하기 전에 PyPI 에 대해서 먼저 설명을 하는 것이 좋을 것 같다. PyPI (Python Package Index) 는 python 커뮤니티를 위한 기본 python package index 를 모아둔 곳이고, python 개발자라면 누구에게나 오픈 되어있다. 현재 15만개가 넘는 프로젝트에 1백만개가 넘는 패키지가 릴리즈 되어있다. PyPI 에서 권하는 python 설치 툴이 pip 이다.

(여기서 '패키지'(package)라는 용어는 python source code 에서 import 하는 패키지의 종류(모듈 컨테이너)를 말하는 것이 아니라, '배포'(distribution) - (설치될 소프트웨어의 모음)라는 의미를 갖는다. 일반적으로 Python 커뮤니티에서는 '패키지' 라는 용어를 배포의 의미로 사용한다. '배포'라는 용어는 리눅스의 배포(linux distribution)나 다른 큰 소프트웨어 배포(예를 들어 python 자체와 같은)와 쉽게 혼동될 수 있어서 선호되지 않는다) 

대부분의 리눅스 배포판의 경우에 각각 설치 패키지 툴이 있어서 pip 를 해당 패키지를 통해서 설치가 가능하다. 배포판을 사용하지 않거나, ios 와 같이 어떤 배포툴을 사용해야할지 모르는 경우에 pip 를 설치하는 방법은 다음과 같다.

(참고 : https://packaging.python.org/tutorials/installing-packages/#ensure-you-can-run-pip-from-the-command-line)

 

우분투 20.04 에서 pip 설치는 다음을 참고한다

(참고 : linuxize.com/post/how-to-install-pip-on-ubuntu-20.04/)

python3 pip 설치

sudo apt update
sudo apt install python3-pip

pip3 --version

python2 pip 설치

우분투 20.04 에서는 python2 가 repository 에 포함되어있지 않기 때문에 아래 방법을 사용하여 설치하도록 한다.

 

 

우선 pip 가 설치되었는지 아래 명령으로 확인한다.

# pip --version

설치되지 않았다면, 다음 파일을 다운로드 하거나, 아래 명령을 사용하여 다운로드 받는다. 다운로드가 완료되면 python 스크립트를 실행해준다. 

get-pip.py
다운로드

 

# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

# python get-pip.py

스크립트가 실행될 때, 설치권한이 없다는 에러문구가 뜬다면 sudo 권한으로 실행해주면 된다.

get-pip.py 를 실행하면 setuptools 와 wheel 과 같은 배포관련 패키지도 설치가 되어있지 않다면, 함께 설치해준다.

한번 pip 를 설치한 후에는 pip 명령을 사용하여 업그레이드를 진행한다.

# pip install -U pip

pip 가 설치되었다면 pip 를 통해서 PyPI 에 인덱싱된 python 패키지를 설치할 수 있다. 상세한 내용은 문서를 참고하는 것이 좋다. 간단한 사용법은 아래와 같다.

/* 패키지 설치 */

# pip install <package name>

 

/* 설치된 패키지 업그레이드 */

# pip install --upgrade <package name>

 

/* 패키지 제거 */

# pip uninstall <package name>

 

/* 설치된 패키지 파일 목록 */

# pip show --files <package name>

pip 는 command line 프로그램이다. pip 도 python code 이기 때문에, import pip 등을 통해서 사용이 가능하지만, python에서는 pip를 이런 방식으로 사용하는 것을 지원하지 않는다.

그 첫번째 이유는, pip 는 전역 상태에 대한 단독 제어를 가정하고 프로그래밍 되어있기 때문에, 사용자 코드가 그에 영향을 줄 것을 고려하지 않고, 시스템 로깅 설정이나, stream IO등을 관리하도록 되어 있기 때문이다.

둘째는 thread-safe 하지 않다. pip를 thread 에서 실행하게 되면 pip 나 사용자의 코드가 정상적으로 동작할 것이라는 보장을 할 수가 없다.

세째, pip 는 일단 한번 작업이 끝나면 프로세스를 빠져나오는 것(terminate process)을 가정으로 하고 있다. 따라서 그 시점에 다른 코드가 계속 실행되고 있을 가능성에 대한 처리를 고려하고 있지 않다. 따라서 pip 를 여러 번 호출하는 것은 이슈를 발생시킨다.

따라서 pip 는 python의 패키지가 아니라 독립적인 command line tool로 생각하고 실행하는 것이 좋다.