패키지(Package)란, 프로그램 제작에 사용하기 위해 라이브러리라고 하는데, 파이썬에서는 라이브러리 대신 패키지라는 용어를 사용함.
일부 패키지는 파이썬을 설치할때 함께 설치되는데 이러한 패키지를 표준패키지(stardard package)라고 함.
그 외의 패키지는 추가로 설치해야한다. C, 자바 등의 언어는 새로운 라이브러리를 설치할때 라이브러리 웹사이트를 방문하여 내려받아 사용해야하지만, 파이썬은 모든 패키지를 한 서버에 등록해서 사용하기때문에 간단한 명령어로 패키지를 설치할 수 있다. 기본적으로 모든 파이썬 패키지는 Python Package Index(PyPI) 서버라는 공식 패키지 서버에 등록된다.
아나콘다 배포판의 경우에는 PyPI가 아닌 독자적인 아나콘다 패키지 서버를 운영하고 있으며 운영체제별로 미리 컴파일된 패키지를 제공하는 대신 PyPI보다는 제공하는 패키지의 수가 적다.
패키지를 설치하기 위한 프로그램을 패키지 관리자(Package Manager)라고 함. 파이썬은 pip라고 하는 패키지 관리자를 기본으로 제공하고, 아나콘다 배포판에서는 conda라고 하는 아나콘다 전용 패키지 관리자를 제공함. conda는 아나콘다 배포판이 설치될 때 자동으로 함께 설치된다.
pip는 자주 업데이트되므로 가상환경에서 업데이트 해주는 것이 좋음.
pip는 보통 python2.x버전에서 사용됨. 호환성을 위해 python3.x버전을 사용하면 pip3를 사용하자.
pip 업그레이드
pip install --upgrade pip
외부 패키지 설치
pip install 패키지명 # 최신버전으로 설치
pip install 패키지명==버전 # 특정버전으로 설치
pip install 패키지명>=버전 # 특정버전 이상으로 설치
최신버전으로 업그레이드
pip install --upgrade 패키지명
pip install -U 패키지명
설치된 패키지 확인
pip list # 현재 환경에 설치된 모든 패키지 간단히 표시. 패키지이름과 버전만 표시함.
pip freeze # 패키지이름과 버전을 정확히 표시.
패키지 정보 확인
pip show 패키지명
(X) pip search 패키지명 # 현재는 지원하지 않음. 에러생성.
패키지 삭제
pip uninstall 패키지명
패키지 파일 목록 만들기
여러명이 함께 프로그램을 개발할때는 필요한 의존성 패키지를 반드시 똑같이 맞추고 진행해야함.
만들어진 requirements.txt 파일에는 패키지 이름과 버전이 포함되어 있다.
pip freeze > requirements.txt # 완전한 패키지 목록이 포함되므로, 종속성관리 및 환경재현에 더 적합함.
pip list > requirements.txt # 패키지 종속성 관리에는 사용하지 않음.
requiremnets.txt를 공유하고 실해하여 동일한 패키지 버전으로 설치한다. 리스트에 적힌 패키지들이 전부 설치됨.
pip install -r requiremnets.txt
# -r: 파일읽기. -r다음에는 파일 경로가 지정됨.
외부 패키지 설치
conda install 패키지명
최신버전으로 업그레이드
conda update 패키지명
설치된 패키지 확인
conda list
패키지 정보 확인
conda search 패키지명
패키지 삭제
conda remove 패키지명
하나의 시스템에서 여러 프로젝트를 동시에 개발할때, 각각의 프로젝트가 필요로 하는 패키지 버전을 격리하여 충돌을 방지해야한다. 가상환경은 프로젝트별로 독립된 파이썬 실행 환경을 만들어준다.
venv 모듈을 사용하여 가상환경 생성
가상환경 생성
python -m venv 가상환경이름
# -m: 파이썬 모듈을 실행하기 위한 옵션
# venv: venv라는 모듈 사용
가상환경 활성화
activate라는 스크립트를 실행
# macOS/Linux
source 가상환경이름/bin/activate
# source: 셀세션에서 스크립트를 실행
# bin/activate: bin디렉토리(binary)안에 있는 activate라는 스크립트
# Windows
가상환경이름\Scripts\activate
가상환경 비활성화
deactivate
가상환경 제거
디렉토리 삭제하기
# macOS/Linux
rm -rf 가상환경이름
# rm: remove
# -r: 디렉토리를 재귀적(recursively)으로 삭제하는 옵션. 디렉토리의 모든 하위디렉토리와 파일 삭제함.
# -f: 강제(force)삭제 옵션. 삭제권한이 없거나 파일이 읽기 전용인 경우에도 강제 삭제 진행.
# Windows
rmdir /s 가상환경이름
# rmdir: remove directory
# /s: 디렉토리내의 모든 하위디렉토리를 삭제하는 옵션.(subdirectories)
가상환경 생성
conda create --name 가상환경이름 python=버전
가상환경 활성화
conda activate 가상환경이름
가상환경 비활성화
conda deactivate