HOWTO · Python

pip으로 특정 Python 패키지 버전 설치하기

예정된 환경에서 pip으로 정확한 Python 패키지 버전을 설치하고 확인하는 방법을 설명합니다.

이 페이지의 내용

pip은 Python 패키지를 설치하지만 Python 인터프리터 자체를 설치하거나 전환하지는 않습니다. 사용하려는 인터프리터로 특정 패키지 버전을 설치하려면 python -m pip install PACKAGE==VERSION을 실행합니다. Windows에서는 py -m pip install PACKAGE==VERSION으로 등록된 Python 런처 대상을 선택할 수 있습니다. 프로젝트에 속한 버전을 고정할 때는 가상 환경을 사용하세요.

지정한 Python 인터프리터로 특정 패키지 버전 설치하기

PACKAGE와 VERSION을 배포판 이름과 사용 가능한 릴리스로 바꾸세요. 예를 들어 python -m pip install requests==2.32.3과 같이 입력합니다. == 지정자는 정확한 패키지 버전을 고정합니다. 재현 가능한 종속성을 만드는 데 유용하지만 Python 3.12, 3.13 또는 다른 인터프리터 릴리스를 설치하는 명령은 아닙니다. 먼저 해당 인터프리터를 설치하거나 선택한 다음 그 인터프리터의 pip 모듈을 호출하세요.

정규화되지 않은 pip 명령보다 python -m pip을 사용하는 것이 좋습니다. 인터프리터와 패키지 관리자의 연결을 명확하게 보여 주기 때문입니다. 프로젝트 종속성을 변경하기 전에 python --version과 python -m pip --version으로 선택한 인터프리터를 확인하세요.

격리된 환경을 만들거나 선택하고 확인하기

python -m venv .venv로 환경을 만든 다음 사용하는 셸에 맞는 명령으로 활성화하세요. 활성화한 뒤 python --version은 프로젝트의 인터프리터를 식별해야 하고, python -m pip --version은 .venv 아래의 경로를 보여야 합니다. 어느 명령이든 다른 위치를 가리키면 전역으로 패키지 버전을 고정하지 말고 올바른 환경을 활성화하세요.

정확한 패키지 버전을 설치하고 확인하기

다음 오프라인 픽스처는 작은 패키지 wheel을 만들고, 새 가상 환경에 정확한 버전을 설치한 뒤 설치된 메타데이터를 출력합니다. 일반적인 작업에서는 패키지 인덱스가 wheel을 제공합니다. 설치 명령에서 중요한 부분은 demo-package==1.0.0입니다.

rm -rf /tmp/pip-pin-demo
python3 -m venv /tmp/pip-pin-demo
/tmp/pip-pin-demo/bin/python /work/build_wheel.py /tmp/pip-pin-demo/wheelhouse
/tmp/pip-pin-demo/bin/python -m pip install --no-index --find-links /tmp/pip-pin-demo/wheelhouse demo-package==1.0.0
/tmp/pip-pin-demo/bin/python -m pip show demo-package | sed -n '1,3p'

테스트는 위의 정확한 명령을 실행하기 전에 설정 단계를 수행하고 다음 출력을 확인합니다.

Looking in links: /tmp/pip-pin-demo/wheelhouse
Processing /tmp/pip-pin-demo/wheelhouse/demo_package-1.0.0-py3-none-any.whl
Installing collected packages: demo-package
Successfully installed demo-package-1.0.0
Name: demo-package
Version: 1.0.0
Summary: Local package used by the pip version-pin fixture

실제 종속성은 python -m pip show PACKAGE로 확인하거나 프로젝트에서 패키지를 import하세요. --upgrade를 요청하지 않으면 pip은 보통 설치된 버전을 그대로 둡니다. --upgrade를 추가하면 전이 종속성이 바뀔 수 있으므로 resolver 출력을 검토하고 프로젝트 테스트를 실행하세요.

requirements 파일에 버전 고정 기록하기

여러 종속성을 사용한다면 requirements.txt에 한 줄에 하나씩 요구 사항을 작성합니다. 예를 들어 requests==2.32.3과 urllib3==2.2.2를 적은 뒤 python -m pip install -r requirements.txt로 설치하세요. 재현 가능한 애플리케이션 환경을 나타내는 파일이라면 커밋합니다. 종속성 관리 도구가 만든 lock 파일은 해결된 전이 종속성도 기록하므로 더 완전할 수 있습니다.

정확한 고정, 호환 범위 또는 업그레이드를 의도적으로 선택하기

프로젝트에 테스트한 특정 패키지 버전이 필요하면 정확한 버전을 고정하세요. 라이브러리가 여러 릴리스 범위와 호환된다면 package>=1.0,<2.0 같은 범위가 더 적절할 수 있습니다. < 또는 >를 해석하는 셸에서는 python -m pip install 'package>=1.0,<2.0'처럼 지정자를 따옴표로 감싸세요. 버전 지정자는 PyPA 패키징 규칙을 따르므로 모든 플랫폼이나 Python 릴리스에서 겉보기 버전 이름을 사용할 수 있다고 가정하지 마세요.

사용할 수 없거나 호환되지 않는 버전 문제 해결하기

경계 픽스처는 버전 1.0.0만 들어 있는 wheelhouse에서 demo-package==9.9.9를 요청합니다. 일치하는 배포판을 찾을 수 없으므로 종료 상태 1이 됩니다.

/tmp/pip-pin-demo/bin/python -m pip install --no-index --find-links /tmp/pip-pin-demo/wheelhouse demo-package==9.9.9

공개 인덱스 설치도 비슷하게 실패하면 먼저 패키지 이름과 인덱스에 나열된 버전을 확인하세요. 그런 다음 패키지의 Requires-Python 메타데이터와 인터프리터 버전을 확인합니다. 이전 릴리스는 최신 Python 인터프리터를 지원하지 않을 수 있고, 최신 릴리스는 오래된 인터프리터를 지원하지 않을 수 있습니다. 종속성 충돌은 별도의 resolver 문제이므로 관련 없는 오래된 패키지 버전을 강제로 사용하지 말고 프로젝트 제약 조건을 의도적으로 바꾸세요. 실제로 다른 Python 인터프리터가 필요하다면 운영 체제, Python 배포판 또는 버전 관리자로 설치하고 그 인터프리터에서 새 환경을 만든 다음 해당 인터프리터의 python -m pip을 사용하세요.