Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

PyPI (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.24 12:21

PyPI

공식 명칭

파이썬 패키지 인덱스 (Python Package Index, PyPI)

다른 명칭

치즈 숍 (Cheese Shop)

운영 주체

파이썬 소프트웨어 재단

용도

파이썬 용 공식 타사 소프트웨어 저장소

호스팅 패키지 수

450,000개 이상[?]

유사 저장소

펄의 CPAN

R의 CRAN

주요 패키지 관리자

pip

상세 정보

호스팅 형식

sdists(소스 배포판)

미리 컴파일된 휠(wheel)

주요 기능

패키지 검색

메타데이터 필터링(라이센스, 호환성 등)

단일 항목 구성

패키지 및 메타데이터

이전 릴리스

다양한 운영 체제 및 파이썬 버전용 사전 컴파일된 휠

1. 개요

파이썬 패키지 인덱스는 파이썬 프로그래밍 언어를 위한 공식적인 타사 소프트웨어 저장소이다. 공식 명칭은 Python Package Index이며, 약어인 PyPI로 널리 알려져 있다. 이 저장소는 펄의 CPAN이나 R의 CRAN과 유사한 역할을 하며, 전 세계의 파이썬 개발자들이 자신이 만든 라이브러리나 패키지를 공유하고 배포하는 중심 허브이다.

PyPI는 파이썬 소프트웨어 재단이 운영하는 비영리 서비스로, 누구나 자유롭게 패키지를 등록하거나 설치할 수 있다. 여기에는 넘파이, 판다스, 장고와 같은 수많은 인기 있는 오픈소스 패키지가 호스팅되어 있다. 사용자는 주로 pip라는 패키지 관리자를 통해 PyPI에서 패키지를 손쉽게 검색하고 설치한다.

이 저장소는 단순한 파일 아카이브를 넘어서, 각 패키지의 버전, 저자, 라이선스, 의존성 같은 중요한 메타데이터를 관리한다. 패키지는 소스 코드 형태인 sdists나 미리 컴파일된 휠 형식으로 업로드될 수 있다. 2023년 5월 기준으로 PyPI에는 45만 개 이상의 파이썬 패키지가 등록되어 있으며, 그 수는 꾸준히 증가하고 있다.

PyPI의 비공식적인 별칭은 '치즈 숍'이다. 이는 몬티 파이썬의 유명한 코미디 스케치에서 유래한 것으로, 파이썬 커뮤니티의 유머 감성을 반영한다. 이 인덱스의 존재는 파이썬 생태계의 풍부함과 협력적 개발 문화의 핵심 기반이 된다.

2. 역사

파이썬 패키지 인덱스는 2000년대 초반에 등장했다. 이 서비스는 원래 '치즈 숍'이라는 별칭으로 불렸으며, 이 이름은 몬티 파이썬의 유명한 코미디 스케치에서 유래했다. 초기에는 파이썬 커뮤니티가 작성한 소프트웨어 패키지를 등록하고 검색할 수 있는 간단한 인덱스 역할을 했다.

서비스는 점차 성장하여 파이썬 생태계의 핵심 인프라가 되었다. 2011년에는 웹 인터페이스와 백엔드 시스템이 완전히 재작성된 'PyPI 2.0'이 출시되었다. 이후 운영 주체는 파이썬 소프트웨어 재단으로 이관되어 관리되고 있다.

시간이 지남에 따라 호스팅되는 패키지 수는 기하급수적으로 증가했다. 2023년 5월 기준으로 파이썬 패키지 인덱스에는 45만 개 이상의 프로젝트가 등록되어 있으며, 이는 파이썬 언어의 광범위한 인기와 활발한 오픈소스 생태계를 반영한다. 이 저장소는 펄의 CPAN이나 R의 CRAN과 유사한 역할을 수행하며, pip를 비롯한 패키지 관리자들의 기본 패키지 소스로 사용된다.

3. 기능

3.1. 패키지 호스팅 및 배포

PyPI의 핵심 기능은 파이썬 패키지의 중앙 저장소 역할을 하여 개발자들이 자신의 소프트웨어를 전 세계에 배포하고, 다른 개발자들이 필요한 패키지를 쉽게 찾아 설치할 수 있게 하는 것이다. 이 플랫폼은 소스 배포판(sdist)과 휠(Wheel)이라는 두 가지 주요 형식의 패키지를 호스팅한다. 소스 배포판은 패키지의 원본 코드와 설정 스크립트(setup.py)를 포함하는 반면, 휠은 미리 컴파일된 바이너리 형식으로, 특히 C 확장 모듈이 포함된 패키지의 설치 속도를 크게 향상시킨다.

패키지 배포 과정은 개발자가 패키지 메타데이터와 아카이브 파일을 PyPI 서버에 업로드하는 것으로 이루어진다. 이때 twine과 같은 도구가 안전한 업로드에 주로 사용된다. 업로드가 완료되면 해당 패키지는 PyPI의 방대한 인덱스에 등록되어, pip와 같은 패키지 관리자를 통해 누구나 검색하고 설치할 수 있는 공개 자산이 된다. 이 시스템은 오픈 소스 생태계의 협력과 재사용을 가능하게 하는 기반이 된다.

PyPI는 단순한 파일 저장소를 넘어서, 패키지의 각 릴리스 버전을 관리하고 보관하는 역할도 한다. 덕분에 사용자는 특정 버전의 패키지를 명시적으로 설치하거나, 프로젝트의 의존성을 정확히 관리할 수 있다. 이렇게 체계적인 호스팅과 배포 인프라는 파이썬이 웹 개발, 데이터 과학, 머신 러닝 등 다양한 분야에서 풍부한 라이브러리 생태계를 구축할 수 있도록 뒷받침한다.

3.2. 메타데이터 및 검색

PyPI는 단순한 파일 저장소를 넘어, 각 패키지에 대한 상세한 메타데이터를 제공하는 검색 가능한 인덱스 역할을 한다. 패키지 업로드 시 작성되는 pyproject.toml 또는 setup.py 파일에는 패키지 이름, 버전, 저자, 라이선스, 필수 의존성 패키지, 지원하는 파이썬 버전, 운영 체제, 짧은 설명, 장문의 문서 등이 포함된다. 이 메타데이터는 PyPI 웹사이트나 pip와 같은 패키지 관리자를 통해 검색과 필터링의 기반이 된다.

사용자는 PyPI 웹사이트의 검색 기능을 이용해 특정 기능을 제공하는 패키지를 키워드로 찾을 수 있으며, 라이선스 유형(예: MIT 라이선스, 아파치 라이선스), 개발 상태, 의도된 대상 사용자 등의 메타데이터로 결과를 필터링할 수 있다. 이는 펄의 CPAN이나 R의 CRAN과 유사한 접근 방식이다. 또한 패키지 페이지에는 종종 자동 생성된 문서 링크, 버그 추적기, 소스 코드 저장소(예: GitHub) 주소가 제공되어 개발자에게 추가 정보를 제공한다.

이러한 체계적인 메타데이터 관리는 대규모 생태계에서 패키지의 발견 가능성과 사용성을 크게 높인다. 사용자는 필요한 패키지를 쉽게 찾고, 해당 패키지가 자신의 프로젝트 환경(예: 파이썬 3.10, 리눅스)과 호환되는지 빠르게 확인할 수 있다. 또한 메타데이터에 명시된 의존성 정보는 pip가 패키지 설치 시 필요한 다른 패키지들을 자동으로 함께 설치하게 하는 근거가 된다.

4. 사용 방법

4.1. 패키지 설치 (pip)

PyPI에서 패키지를 설치하는 가장 일반적인 방법은 pip를 사용하는 것이다. pip는 파이썬 패키지 관리자로, 파이썬 3.4 버전 이후부터는 기본적으로 함께 설치된다. 사용자는 명령줄 인터페이스에서 pip install 패키지명 명령어를 실행하면, pip가 자동으로 PyPI 저장소에 연결하여 해당 패키지와 그에 필요한 종속성을 다운로드하여 설치한다.

설치 과정에서 pip는 패키지의 메타데이터를 확인하고, 필요한 경우 해당 패키지의 특정 버전을 지정하거나, 시스템 호환성을 고려하여 미리 컴파일된 휠 파일이나 소스 배포판을 선택한다. 또한, requirements.txt 파일을 활용하여 한 번에 여러 패키지와 그 버전을 관리할 수 있어, 가상 환경이나 프로젝트 간 일관된 개발 환경을 구성하는 데 유용하다.

4.2. 패키지 업로드

패키지를 PyPI에 업로드하려면 개발자는 먼저 패키지를 배포 가능한 형식으로 준비해야 한다. 이는 일반적으로 setup.py 또는 pyproject.toml 파일을 사용하여 패키지 메타데이터와 의존성을 정의하는 과정을 포함한다. 패키지 소스 코드는 소스 배포판(sdist)이나 미리 컴파일된 휠(Wheel) 형식으로 패키징된다. 이 과정에서 setuptools나 flit 같은 도구가 널리 사용된다.

업로드 자체는 twine이라는 도구를 통해 이루어진다. twine은 패키지를 안전하게 PyPI 서버에 전송하는 역할을 하며, 기존의 setup.py upload 방식보다 보안성이 뛰어나다. 개발자는 터미널에서 twine upload dist/* 명령어를 실행하여 패키지를 업로드할 수 있다. 이때, PyPI 웹사이트에서 생성한 API 토큰이나 사용자 계정 정보를 사용하여 인증을 거쳐야 한다.

패키지가 성공적으로 업로드되면, PyPI는 해당 패키지의 메타데이터를 색인화하고 패키지 파일을 호스팅한다. 이후 전 세계의 파이썬 사용자들은 pip install 패키지명 명령어를 통해 손쉽게 해당 패키지를 설치하고 사용할 수 있게 된다. 패키지의 새 버전을 출시할 때도 동일한 업로드 절차를 반복한다.

5. 운영 및 관리

5.1. 파이썬 소프트웨어 재단

PyPI는 파이썬 소프트웨어 재단이라는 비영리 자선단체에 의해 운영된다. 이 재단은 파이썬 프로그래밍 언어의 발전, 보호 및 홍보를 목표로 하는 조직으로, 오픈 소스 생태계의 지속 가능성을 지원하는 역할을 한다. PyPI의 운영 주체로서 재단은 저장소의 인프라 유지 관리, 보안 정책 수립, 커뮤니티 가이드라인 준수 감독 등의 책임을 진다.

이러한 운영 구조는 PyPI가 공공의 이익을 위한 공식 저장소로서의 지위를 유지하도록 보장한다. 재단의 관리 하에 PyPI는 개발자들에게 안정적이고 신뢰할 수 있는 패키지 호스팅 서비스를 무료로 제공하며, 오픈 소스 라이선스를 준수하는 프로젝트의 성장을 촉진한다. 이는 펄의 CPAN이나 R의 CRAN과 유사한 공식 생태계 모델이다.

파이썬 소프트웨어 재단의 관리 덕분에 PyPI는 단순한 코드 저장소를 넘어 파이썬 커뮤니티의 핵심 허브 역할을 한다. 재단은 후원 프로그램과 회원 제도를 통해 PyPI 서버 운영 비용을 조달하고, 저장소의 장기적인 발전을 위한 정책을 수립한다. 이는 전 세계 수백만 명의 파이썬 사용자와 수십만 개의 패키지가 의존하는 핵심 인프라의 안정성을 유지하는 데 기여한다.

6. 통계

PyPI는 전 세계 파이썬 개발자들이 공유하는 패키지의 규모를 보여주는 다양한 통계를 제공한다. 가장 핵심적인 지표는 호스팅되는 패키지의 총 수이다. 2023년 5월 기준으로 PyPI에는 450,000개 이상의 파이썬 패키지가 등록되어 있으며, 이는 지속적으로 증가하는 추세를 보인다. 이 방대한 규모는 파이썬 생태계의 활발함과 오픈 소스 문화의 성장을 단적으로 보여준다.

패키지 다운로드 수는 인기와 사용량을 측정하는 중요한 지표이다. PyPI는 공식적으로 패키지별 일일, 주간, 월간 다운로드 통계를 제공한다. 이를 통해 NumPy, Pandas, Requests와 같은 주요 라이브러리들은 수억에서 수십억 회에 달하는 누적 다운로드 수를 기록하며 생태계의 핵심 기반으로 자리 잡고 있음을 확인할 수 있다. 이러한 통계는 개발자들이 패키지를 선택할 때 참고 자료로 활용되기도 한다.

PyPI의 운영 주체인 파이썬 소프트웨어 재단은 공식 블로그나 연례 보고서를 통해 플랫폼의 성장과 관련된 다양한 통계를 공유한다. 여기에는 월간 활성 사용자 수, 하루 최대 다운로드 처리량, 새로운 패키지 등록률, 그리고 pip를 통한 트래픽 추이 등이 포함된다. 이러한 데이터는 인프라 확장 계획을 수립하고, 파이썬 커뮤니티의 건강 상태를 모니터링하는 데 기여한다.

7. 관련 기술 및 도구

7.1. pip

pip는 파이썬 패키지 관리자로, PyPI에 호스팅된 수십만 개의 패키지와 그 종속성을 설치하고 관리하는 표준 도구이다. 파이썬 3.4 버전부터는 파이썬 기본 설치에 포함되어 있어 별도의 설치 과정 없이도 사용할 수 있다. pip는 명령줄 인터페이스를 통해 작동하며, 패키지 설치, 업그레이드, 제거, 목록 확인 등 패키지 생명주기 전반을 관리한다.

pip의 핵심 기능은 PyPI 저장소에서 패키지를 찾아 자동으로 다운로드하고 설치하는 것이다. 사용자는 간단히 pip install 패키지명 명령어를 입력하면, pip는 PyPI에서 해당 패키지의 최신 버전을 찾아 필요한 모든 의존 패키지와 함께 시스템에 설치한다. 또한 특정 버전을 지정하거나, 요구 사항 파일(requirements.txt)을 통해 프로젝트에 필요한 패키지 목록을 한꺼번에 설치하는 것도 가능하다.

pip는 가상 환경과의 연동이 필수적이다. 파이썬 프로젝트마다 서로 다른 버전의 패키지를 요구할 수 있기 때문에, venv나 conda 같은 가상 환경을 생성한 후 그 안에서 pip를 사용하여 패키지를 설치함으로써 프로젝트 간 의존성 충돌을 방지한다. 이는 현대적인 파이썬 개발 워크플로우의 표준 관행이다.

pip 자체도 지속적으로 발전하고 있으며, 의존성 해결 알고리즘 개선, 보다 빠른 설치를 위한 캐싱, 그리고 보안 강화가 주요 개발 방향이다. pip는 PyPI 생태계의 핵심 구성 요소로서, 파이썬의 방대한 오픈소스 라이브러리 생태계를 유지하고 접근성을 높이는 데 기여한다.

7.2. twine

twine은 파이썬 패키지를 PyPI에 업로드하기 위한 유틸리티 도구이다. 이 도구는 패키지 개발자가 소스 배포판(sdist)이나 휠(Wheel)과 같은 배포 아카이브를 안전하게 PyPI 서버에 업로드하는 과정을 단순화한다. twine은 pip와 함께 파이썬 패키징 생태계의 핵심 도구 중 하나로 자리 잡았다.

주요 기능은 HTTPS를 통한 안전한 업로드를 보장하는 것이다. 이전에는 setup.py upload 명령을 사용했지만, 이 방식은 안전하지 않은 연결을 사용할 수 있어 보안상의 문제가 있었다. twine은 모든 업로드를 HTTPS로 강제함으로써 패키지와 인증 정보를 안전하게 전송한다. 또한 업로드 전에 패키지를 먼저 빌드하고 로컬에서 테스트할 수 있게 하여, 실수로 불완전한 빌드 파일을 업로드하는 것을 방지한다.

사용 방법은 간단하다. 먼저 pip install twine 명령으로 twine을 설치한다. 패키지를 배포할 준비가 되면, python setup.py sdist bdist_wheel 등의 명령으로 배포 파일을 생성한 후, twine upload dist/* 명령을 실행하면 된다. 이 명령은 사용자에게 인증 정보를 요청한 후, 지정된 파일들을 PyPI에 업로드한다.

twine은 PyPI 외에도 다른 패키지 저장소, 예를 들어 조직 내부의 사설 PyPI 미러 서버에도 패키지를 업로드하는 데 사용할 수 있다. 이는 테스트 서버에 패키지를 배포하거나 내부 배포 파이프라인을 구축할 때 유용하다.

7.3. 휠(Wheel)

휠은 파이썬 패키지의 표준 빌드 포맷이다. 이전에 주로 사용되던 소스 배포판(sdist)과 달리, 휠은 미리 컴파일된 바이너리 패키지 형식으로, 설치 과정에서 빌드 단계를 거칠 필요가 없다. 이는 특히 C 확장 모듈이나 포트란 코드가 포함된 패키지를 설치할 때 큰 장점이 된다. 사용자는 복잡한 컴파일러 도구 체인을 시스템에 설치하지 않고도 빠르게 패키지를 설치할 수 있다.

휠 포맷은 파일 확장자 .whl을 사용하며, PEP 427에서 표준으로 정의되었다. 이 포맷은 패키지 이름, 버전, 파이썬 버전, ABI, 운영 체제 플랫폼 등에 대한 상세한 메타데이터를 파일명에 인코딩한다. 이를 통해 pip 같은 패키지 관리자는 사용자의 현재 환경에 가장 적합한 미리 빌드된 패키지 파일을 자동으로 선택하여 다운로드할 수 있다.

휠의 도입은 PyPI 생태계의 패키지 설치 경험을 크게 개선했다. 소스 배포판만 제공되던 시절에는 패키지 설치 실패가 흔했으나, 휠을 통해 대부분의 주요 운영 체제와 파이썬 버전에 대해 사전 빌드된 패키지를 제공함으로써 설치의 신뢰성과 속도가 향상되었다. 패키지 개발자는 twine이나 python -m build 같은 도구를 사용해 소스 코드에서 휠 패키지를 쉽게 생성할 수 있다.

휠은 내부적으로 ZIP 아카이브 형식을 기반으로 하며, 표준화된 디렉토리 구조와 메타데이터 파일을 포함한다. 이 설계는 패키지 설치가 단순히 아카이브를 특정 사이트 패키지 디렉토리에 압축 해제하는 과정으로 이루어질 수 있게 하여 효율성을 높인다. 결과적으로 휠은 현대 파이썬 패키징의 핵심 구성 요소로 자리 잡았으며, pip를 통한 대부분의 패키지 설치가 휠 형식을 통해 이루어진다.

8. 비교

8.1. CPAN, CRAN과의 유사점

PyPI는 파이썬 생태계의 중심 저장소로서, 다른 프로그래밍 언어 커뮤니티의 유사한 인프라와 비교될 수 있다. 특히 펄 언어의 CPAN과 R 언어의 CRAN은 PyPI와 구조와 목적에서 많은 유사점을 공유한다. 이들 모두는 해당 언어의 타사 라이브러리와 패키지를 중앙 집중식으로 호스팅하고 배포하는 공식 저장소 역할을 한다. 이러한 저장소들은 개발자들이 코드를 재사용하고, 프로젝트 의존성을 쉽게 관리하며, 생태계의 표준화를 촉진하는 데 핵심적인 기반을 제공한다.

기본적인 운영 모델과 기능 면에서도 유사성이 두드러진다. CPAN, CRAN, PyPI 모두 패키지의 메타데이터(버전, 저자, 의존성 정보 등)를 관리하고, 사용자가 키워드나 카테고리로 패키지를 검색할 수 있는 웹 인터페이스 또는 API를 제공한다. 또한, 각 저장소는 자체적인 패키지 관리 도구(pip for PyPI, cpan for CPAN 등)와 통합되어 있어, 사용자는 간단한 명령어로 패키지를 설치하거나 업데이트할 수 있다. 이는 개발자 경험을 표준화하고 생산성을 높이는 데 기여한다.

이러한 중앙 저장소 모델은 각 언어 커뮤니티의 협업과 성장을 뒷받침하는 사회적, 기술적 허브가 된다는 점에서도 공통적이다. CPAN, CRAN, PyPI는 단순한 파일 서버를 넘어 패키지의 품질을 일정 수준 유지하기 위한 가이드라인을 제시하고, 때로는 자동화된 테스트 시스템을 운영하기도 한다. 결과적으로, 이들 플랫폼은 각각 펄, R, 파이썬 생태계가 방대한 오픈 소스 소프트웨어 컬렉션으로 성장하는 데 결정적인 역할을 해왔다.

9. 여담

PyPI의 별칭인 '치즈 숍'은 몬티 파이썬의 유명한 코미디 스케치 '치즈 숍'에서 유래했다. 이 스케치는 고객이 치즈를 요구할 때마다 점원이 갖고 있지 않다고 대답하는 내용으로, 초기 파이썬 패키지 저장소가 비어 있을 것이라는 농담에서 이 별명이 붙었다. 이는 펄의 CPAN이나 R의 CRAN과 같은 다른 언어 생태계의 저장소 명명 관행과 유사한 유머러스한 전통을 반영한다.

PyPI는 파이썬 소프트웨어 재단이 운영하는 비영리 서비스로, 전 세계 개발자들이 무료로 패키지를 배포하고 설치할 수 있는 공공 인프라를 제공한다. 이는 오픈 소스 생태계의 핵심 기반 중 하나로 작동하며, 인공지능, 데이터 과학, 웹 개발 등 다양한 분야의 파이썬 프로젝트 발전을 뒷받침한다.

PyPI의 성장은 파이썬 언어의 인기 증가와 궤를 같이한다. 2023년 5월 기준으로 호스팅하는 패키지 수는 450,000개 이상에 달하며, 이는 수많은 개인과 조직의 기여를 통해 지속적으로 확장되고 있다. 이러한 방대한 패키지 저장소는 pip를 통해 쉽게 접근되어 파이썬의 높은 생산성과 풍부한 생태계를 가능하게 하는 근간이 된다.

10. 참고 자료

  • ko.wikipedia.org

리비전 정보

버전r1
수정일2026.02.24 12:21
편집자unisquads
편집 요약AI 자동 생성