파이썬의 패키지 매니저 pip 사용법
pip(Package Installer for Python)는 파이썬에 기본적으로 내장되어 있는 패키지 매니저입니다. 이 명령줄 도구를 사용하면 Python Package Index에 다른 개발자들이 올려놓은 패키지를 쉽게 다운로드하고 설치할 수 있는데요.
이번 포스팅에서는 pip를 사용하여 패키지를 관리하는 기본적인 방법에 대해서 알아보겠습니다.
pip 설치 여부 확인
pip는 파이썬만 설치하면 기본적으로 딸려서 설치가 되는데요. 혹시 모르니 컴퓨터에 먼저 파이썬과 pip의 설치 여부를 확인하고 넘어가주세요.
$ python -V
Python 3.11.2
$ pip -V
pip 23.1 from /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pip (python 3.11)
패키지 설치
pip로 패키지를 새로운 설치할 때는 pip install
명령어를 사용합니다.
그럼 아무 패키지나 한번 설치해볼까요?
저는 requests
라는 매우 유명한 패키지를 설치해보겠습니다.
$ pip install requests
Collecting requests
Downloading requests-2.29.0-py3-none-any.whl (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.5/62.5 kB 3.2 MB/s eta 0:00:00
Requirement already satisfied: charset-normalizer<4,>=2 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests) (3.1.0)
Requirement already satisfied: idna<4,>=2.5 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests) (2.10)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests) (1.26.15)
Requirement already satisfied: certifi>=2017.4.17 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests) (2022.12.7)
Installing collected packages: requests
Successfully installed requests-2.29.0
만약에 특정 버전을 설치하고 싶다면 패키지명 뒤에 ==버전
을 붙여주면 됩니다.
예를 들어, 일부로 requests 패키지의 이전 버전인 2.28.0을 설치해보겠습니다.
$ pip install requests==2.28.0
Collecting requests==2.28.0
Downloading requests-2.28.0-py3-none-any.whl (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.8/62.8 kB 2.8 MB/s eta 0:00:00
Collecting charset-normalizer~=2.0.0 (from requests==2.28.0)
Downloading charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Requirement already satisfied: idna<4,>=2.5 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests==2.28.0) (2.10)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests==2.28.0) (1.26.15)
Requirement already satisfied: certifi>=2017.4.17 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests==2.28.0) (2022.12.7)
Installing collected packages: charset-normalizer, requests
Attempting uninstall: charset-normalizer
Found existing installation: charset-normalizer 3.1.0
Uninstalling charset-normalizer-3.1.0:
Successfully uninstalled charset-normalizer-3.1.0
Attempting uninstall: requests
Found existing installation: requests 2.29.0
Uninstalling requests-2.29.0:
Successfully uninstalled requests-2.29.0
Successfully installed charset-normalizer-2.0.12 requests-2.28.0
설치된 패키지 확인
pip show
명령어를 사용하면 컴퓨터에 설치된 패키지의 상세 정보를 확인할 수 있습니다.
$ pip show requests
Name: requests
Version: 2.28.0
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages
Requires: certifi, charset-normalizer, idna, urllib3
Required-by: google-api-core, openai, requests-oauthlib
Location
항목을 통해서 실제로 패키지가 어느 경로에 설치되어 있는지 알 수 있습니다.
패키지 업데이트
이미 설치되어 있는 패키지를 업데이트하려면 pip install
명령어를 실행할 때 --upgrade
나 -U
옵션을 주면 됩니다.
예를 들어, 위에서 2.28.0 버전으로 설치한 requests 패키지를 최신 버전으로 올려볼까요?
$ pip install -U requests
Requirement already satisfied: requests in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (2.28.0)
Collecting requests
Using cached requests-2.29.0-py3-none-any.whl (62 kB)
Requirement already satisfied: charset-normalizer<4,>=2 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests) (2.10)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests) (1.26.15)
Requirement already satisfied: certifi>=2017.4.17 in /Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages (from requests) (2022.12.7)
Installing collected packages: requests
Attempting uninstall: requests
Found existing installation: requests 2.28.0
Uninstalling requests-2.28.0:
Successfully uninstalled requests-2.28.0
Successfully installed requests-2.29.0
Python Package Index에는 수시로 패키지 새로운 버전이 올라오기 때문에 패키지를 설치하는 것 만큼 주기적으로 패키지를 업데이트해주는 것도 중요하겠습니다.
패키지 제거
pip로 설치된 패키지를 삭제하려면 pip uninstall
명령어를 사용합니다.
따라서 우리가 설치한 requests 패키지를 삭제하려면 다음과 같이 제거할 수 있습니다.
$ pip uninstall requests
Found existing installation: requests 2.29.0
Uninstalling requests-2.29.0:
Would remove:
/Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages/requests-2.29.0.dist-info/*
/Users/daleseo/.pyenv/versions/3.11.2/lib/python3.11/site-packages/requests/*
Proceed (Y/n)? y
Successfully uninstalled requests-2.29.0
이제 다시 requests 패키지 상대로 pip show
명령어를 실행해보면 패키지를 더 이상 찾을 수 없다고 나오는 것을 볼 수 있습니다.
$ pip show requests
WARNING: Package(s) not found: requests
전체 패키지 목록 확인
본인 컴퓨터에 설치되어 있는 모든 패키지를 확인해보려면 pip list
명령어를 사용합니다.
$ pip list
Package Version
------------------ ---------
certifi 2022.12.7
charset-normalizer 2.0.12
idna 3.4
pip 23.1.2
setuptools 65.5.0
urllib3 1.26.15
requirements.txt 활용
많은 파이썬 프로젝트에서 requirements.txt
파일에 해당 프로젝트에서 개발하기 위해서 설치가 필요한 모든 패키지의 목록을 저장해두는데요.
그러면 개발자들이 아주 쉽게 모든 패키지를 일괄적으로 설치할 수 있기 때문입니다.
우선 pip freeze
명령어를 사용해서 현재 컴퓨터에 설치되어 있는 전체 패키지 목록을 requirements.txt
파일에 저장할 수 있습니다.
$ pip freeze > requirements.txt
이제 requirements.txt
파일을 열어보면 다음과 같이 패키지명===버전
형태로 여러 패키지가 나열되어 있을 것입니다.
$ cat requirements.txt
certifi==2022.12.7
charset-normalizer==2.0.12
idna==3.4
urllib3==1.26.15
이제 어느 컴퓨터에서든 이 requirements.txt
파일만 있으면 pip install
명령어를 실행할 때 -r
옵션을 사용해서 모든 패키지를 일괄 설치할 수 있습니다.
$ pip install -r requirements.txt
마치면서
이상으로 pip를 사용하여 어떻게 파이썬 패키지를 관리하는지에 대해서 알아보았습니다.
참고로 하나의 컴퓨터에서 pip로 동일한 패키지의 다른 버전을 설치하는 경우 프로젝트 간에 의존성(dependency) 충돌이 발생할 수 있는데요. 이러한 문제를 해결하는 방법에 대해서는 별도 포스팅에서 다루고 있으니 참고해보시면 좋을 것 같습니다.