좀 잘 나가는 프로그래밍 언어라면, 패키지(라이브러리) 생태계
가 굉장히 활발하게 형성되어 있습니다. 그 대표격으로 JavaScript 진영의 npm
이 있고, 이와 유사한 패키지 생태계로 Python에는 PyPI(Python Package Index)
가 있습니다. 그리고 이들은 pip
를 이용해 관리할 수 있습니다. pip를 이용해 외부 라이브러리를 설치하면, 파이썬이 설치된 경로의 site-packages
디렉토리에 적용되어 즉시 사용할 수 있게 됩니다. 별도의 의존성 있는 모듈이나 패키지도 함께 설치해 주기 때문에 매우 편리합니다.
Linux 기반 운영체제에서 python
과 python3
명령이 별도로 존재하는 것처럼, pip
와 pip3
명령도 별도로 존재합니다. 각각 python2에 대한 라이브러리, python3에 대한 라이브러리를 관리합니다. pip --version
또는 pip -V
를 통해 설치되어 있는 pip의 버전을 확인할 수 있습니다.
$ pip -V
pip 10.0.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
$ pip3 --version
pip 10.0.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
pip install [packages ...]
PyPI
에서 packages에 해당하는 패키지들을 가져와 설치합니다. 아래의 명령은 virtualenvwrapper를 설치합니다.
$ pip3 install virtualenvwrapper
Collecting virtualenvwrapper
Downloading https://files.pythonhosted.org/packages/2b/8c/3192e10913ad945c0f0fcb17e9b2679434a28ad58ee31ce0104cba3b1154/virtualenvwrapper-4.8.2-py2.py3-none-any.whl
(...)
https://files.pythonhosted.org/packages/b3/5d/c196041ffdf3e34ba206db6d61d1f893a75e1f3435699ade9bd65e089a3d/pbr-4.0.4-py2.py3-none-any.whl (98kB)
100% |████████████████████████████████| 102kB 2.1MB/s
Installing collected packages: six, pbr, stevedore, virtualenv-clone, virtualenvwrapper
Successfully installed pbr-4.0.4 six-1.11.0 stevedore-1.28.0 virtualenv-clone-0.3.0 virtualenvwrapper-4.8.2
여러 개의 패키지들을 한 번에 설치할 수도 있으며, 이미 존재하는 패키지인 경우 'Requirement already satisfied'라는 결과가 보여집니다. 아래의 명령은 시스템에 이미 설치되어 있는 virtualenv와 virtualenvwrapper를 설치합니다.
$ pip3 install virtualenv virtualenvwrapper
Requirement already satisfied: virtualenv in /usr/local/lib/python3.6/site-packages (16.0.0)
Requirement already satisfied: virtualenvwrapper in /usr/local/lib/python3.6/site-packages (4.8.2)
Requirement already satisfied: stevedore in /usr/local/lib/python3.6/site-packages (from virtualenvwrapper) (1.28.0)
Requirement already satisfied: virtualenv-clone in /usr/local/lib/python3.6/site-packages (from virtualenvwrapper) (0.3.0)
Requirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.6/site-packages (from stevedore->virtualenvwrapper) (1.11.0)
Requirement already satisfied: pbr!=2.1.0,>=2.0.0 in /usr/local/lib/python3.6/site-packages (from stevedore->virtualenvwrapper) (4.0.4)
다음과 같이 특정 버전의 패키지를 설치할 수도 있습니다. 아래의 명령은 virtualenvwrapper의 4.7 버전을 설치합니다.
$ pip3 install virtualenvwrapper==4.7
Collecting virtualenvwrapper==4.7
Downloading
(...)
Installing collected packages: virtualenvwrapper
Successfully installed virtualenvwrapper-4.7.0
pip list
pip list
는 pip에 의해, 또는 수동으로 설치되어 있는 패키지들의 목록을 출력합니다.
$ pip3 list
Package Version
----------------- -------
pbr 4.0.4
pip 10.0.1
setuptools 39.0.1
virtualenv 16.0.0
(...)
wheel 0.31.0
pip install --upgrade [packages ...]
packages에 해당하는 패키지들을 시스템에서 찾아, 설치되어 있으면 최신 버전으로 업그레이드하고, 그렇지 않으면 pip install
을 진행합니다. 패키지가 이미 최신 버전으로 설치되어 있다면, 'Requirement already up-to-date'라는 결과가 보여집니다. 아래는 최신 버전인 virtualenv와 최신 버전이 아닌 virtualenvwrapper를 업그레이드하는 명령입니다.
$ pip3 install --upgrade virtualenv virtualenvwrapper
Requirement already up-to-date: virtualenv in /usr/local/lib/python3.6/site-packages (16.0.0)
(...)
Installing collected packages: virtualenvwrapper
Found existing installation: virtualenvwrapper 4.7.0
Uninstalling virtualenvwrapper-4.7.0:
Successfully uninstalled virtualenvwrapper-4.7.0
Successfully installed virtualenvwrapper-4.8.2
pip uninstall [packages ...]
packages에 해당하는 패키지들을 시스템에서 제거합니다. 시스템에 존재하지 않는 패키지일 경우, 'Skipping *** as it is not installed.'라는 결과가 보여집니다. 아래는 설치되어 있는 jinja2와 markupsafe, 설치되어 있지 않은 flask를 제거하는 명령입니다.
$ pip3 uninstall jinja2 markupsafe flask
Uninstalling Jinja2-2.10:
Would remove:
/usr/local/lib/python3.6/site-packages/Jinja2-2.10.dist-info/*
/usr/local/lib/python3.6/site-packages/jinja2/*
Proceed (y/n)? y
Successfully uninstalled Jinja2-2.10
Uninstalling MarkupSafe-1.0:
Would remove:
/usr/local/lib/python3.6/site-packages/MarkupSafe-1.0.dist-info/*
/usr/local/lib/python3.6/site-packages/markupsafe/*
Proceed (y/n)? y
Successfully uninstalled MarkupSafe-1.0
Skipping flask as it is not installed.
'Python 계열 > Python 레거시 글' 카테고리의 다른 글
귀찮음을 줄여주는 간단한 pip 관련 명령 모음(Draft) (0) | 2018.11.12 |
---|---|
requirements.txt로 협업 상황에서의 의존성 관리하기 (0) | 2018.11.07 |
__slots__ (0) | 2018.11.03 |
Context Manager (0) | 2018.11.01 |
Argument Unpacking (0) | 2018.10.30 |