>백엔드 개발 >파이썬 튜토리얼 >Python에서 요구사항.txt를 추출하는 가장 간단한 방법

Python에서 요구사항.txt를 추출하는 가장 간단한 방법

WBOY
WBOY원래의
2024-09-03 20:39:01699검색

The Simplest Way to Extract Your Requirements.txt in Python

소개:

Python 개발자로서 프로젝트 종속성을 관리하는 것은 종종 눈에 띄지 않을 때까지 간과되는 일상적인 작업입니다. pip 동결의 단순성 > 요구 사항.txt는 매력적일 수 있지만 더 복잡한 프로젝트에서는 워크플로를 방해하는 예기치 않은 문제가 발생할 수 있습니다. 여러 가지 장애물을 만난 후 종속성 관리에 대한 보다 안정적이고 세련된 접근 방식을 발견했으며 이를 공유하고 싶습니다.

pip 동결 문제:

pip 동결 명령 > 요구 사항.txt는 많은 개발자의 표준 관행이 되었습니다. 대부분의 경우 작동하지만 몇 가지 중요한 단점이 있습니다.

  1. 불필요한 패키지 포함: pip Freeze는 다른 패키지의 종속성으로 자동 설치된 패키지를 포함하여 설치된 모든 패키지를 캡처합니다. 이로 인해 프로젝트가 직접적으로 의존하지 않는 패키지를 포함할 수 있는 요구사항.txt가 비대해집니다.

  2. 버전 충돌: 자동 설치된 종속성을 포함하면 버전 충돌이 발생할 수 있습니다. 특히 이러한 종속성이 프로젝트에는 필요하지 않지만 다른 패키지에는 필요한 경우 더욱 그렇습니다.

  3. 환경 관련 문제: pip 동결은 환경의 현재 상태를 반영합니다. 여기에는 특정 로컬 요구 사항에 맞게 설치된 패키지가 포함될 수 있으며, 이로 인해 환경을 다른 시스템에 복제할 때 문제가 발생할 수 있습니다.

장벽에 직면:

저는 프로젝트 환경을 복제하려고 할 때 이러한 문제에 직접 직면했습니다. pip Freeze를 사용하여 요구 사항.txt를 생성했지만 새 가상 환경에 이러한 종속성을 설치하려고 할 때 다음 오류가 발생했습니다.

ERROR: Could not find a version that satisfies the requirement cloud-init==23.1.2 (from -r requirements.txt (line 13)) (from versions: none)
ERROR: No matching distribution found for cloud-init==23.1.2 (from -r requirements.txt (line 13))

cloud-init는 제가 직접 설치한 적이 없는 패키지이기 때문에 이 오류가 답답했습니다. 종속성으로 끌어들였으나 pip Freeze가 마치 내 프로젝트의 일급 시민인 것처럼 캡처했습니다.

해결책 찾기:

이러한 문제를 해결하기 위해 저는 pipreqs와 pip-tools를 사용하여 보다 세련된 접근 방식으로 전환했습니다. 종속성 관리 문제를 해결한 단계별 프로세스는 다음과 같습니다.

1. 필요한 도구 설치

먼저 종속성 관리에 대한 보다 세부적인 접근 방식을 제공하는 pipreqs와 pip-tools를 설치했습니다.

pip install pipreqs pip-tools

2. pipreqs를 사용하여 요구 사항 생성

pip 동결을 사용하는 대신 pipreqs를 사용하여 내 프로젝트에서 직접 사용되는 패키지만 포함하는 요구 사항.in 파일을 생성했습니다. 이렇게 하면 불필요한 종속성이 포함되는 것을 방지할 수 있습니다.

pipreqs ./ --savepath requirements.in --force --ignore ./venv/,./test_venv/ --mode no-pin

각 플래그의 역할은 다음과 같습니다.

  • --savepath 요구사항.in: 출력 파일을 지정합니다.
  • --force: 기존 파일을 강제로 덮어씁니다.
  • --ignore ./venv/,./test_venv/: 관련 없는 파일 검사를 방지하기 위해 가상 환경 디렉터리를 무시합니다.
  • --mode no-pin: 버전 고정을 방지하여 유연성을 높입니다.

3. 요구 사항.txt 파일 컴파일

다음으로 pip-tools에서 pip-compile을 사용하여 최종 요구사항.txt를 생성했습니다.

pip-compile

이 단계에서는 필요한 버전의 패키지만 포함되어 깨끗하고 충돌 없는 요구사항.txt를 제공합니다.

4. 종속성 설치

마지막으로 새로 생성된 요구사항.txt에서 종속성을 설치했습니다.

pip install -r requirements.txt

이러한 접근 방식을 통해 불필요한 패키지와 버전 충돌이 없어 더욱 간편하고 관리하기 쉬운 요구사항.txt 파일이 탄생했습니다.

결론:

pipreqs 및 pip-tools를 사용하여 pip 동결에서 보다 강력한 종속성 관리 프로세스로 전환한 것은 내 작업 흐름을 완전히 바꿔 놓았습니다. 즉각적인 문제를 해결했을 뿐만 아니라 프로젝트의 종속성을 더 잘 제어할 수 있게 되었습니다.

Pip Freeze에 의존해 비슷한 문제에 직면했다면 이 접근 방식을 시도해 볼 것을 적극 권장합니다. Python 프로젝트의 안정성과 이식성에 큰 변화를 가져올 수 있는 작은 변화입니다.

위 내용은 Python에서 요구사항.txt를 추출하는 가장 간단한 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.