소개:
Python 개발자로서 프로젝트 종속성을 관리하는 것은 종종 눈에 띄지 않을 때까지 간과되는 일상적인 작업입니다. pip 동결의 단순성 > 요구 사항.txt는 매력적일 수 있지만 더 복잡한 프로젝트에서는 워크플로를 방해하는 예기치 않은 문제가 발생할 수 있습니다. 여러 가지 장애물을 만난 후 종속성 관리에 대한 보다 안정적이고 세련된 접근 방식을 발견했으며 이를 공유하고 싶습니다.
pip 동결 문제:
pip 동결 명령 > 요구 사항.txt는 많은 개발자의 표준 관행이 되었습니다. 대부분의 경우 작동하지만 몇 가지 중요한 단점이 있습니다.
불필요한 패키지 포함: pip Freeze는 다른 패키지의 종속성으로 자동 설치된 패키지를 포함하여 설치된 모든 패키지를 캡처합니다. 이로 인해 프로젝트가 직접적으로 의존하지 않는 패키지를 포함할 수 있는 요구사항.txt가 비대해집니다.
버전 충돌: 자동 설치된 종속성을 포함하면 버전 충돌이 발생할 수 있습니다. 특히 이러한 종속성이 프로젝트에는 필요하지 않지만 다른 패키지에는 필요한 경우 더욱 그렇습니다.
환경 관련 문제: 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를 사용하여 보다 세련된 접근 방식으로 전환했습니다. 종속성 관리 문제를 해결한 단계별 프로세스는 다음과 같습니다.
먼저 종속성 관리에 대한 보다 세부적인 접근 방식을 제공하는 pipreqs와 pip-tools를 설치했습니다.
pip install pipreqs pip-tools
pip 동결을 사용하는 대신 pipreqs를 사용하여 내 프로젝트에서 직접 사용되는 패키지만 포함하는 요구 사항.in 파일을 생성했습니다. 이렇게 하면 불필요한 종속성이 포함되는 것을 방지할 수 있습니다.
pipreqs ./ --savepath requirements.in --force --ignore ./venv/,./test_venv/ --mode no-pin
각 플래그의 역할은 다음과 같습니다.
다음으로 pip-tools에서 pip-compile을 사용하여 최종 요구사항.txt를 생성했습니다.
pip-compile
이 단계에서는 필요한 버전의 패키지만 포함되어 깨끗하고 충돌 없는 요구사항.txt를 제공합니다.
마지막으로 새로 생성된 요구사항.txt에서 종속성을 설치했습니다.
pip install -r requirements.txt
이러한 접근 방식을 통해 불필요한 패키지와 버전 충돌이 없어 더욱 간편하고 관리하기 쉬운 요구사항.txt 파일이 탄생했습니다.
결론:
pipreqs 및 pip-tools를 사용하여 pip 동결에서 보다 강력한 종속성 관리 프로세스로 전환한 것은 내 작업 흐름을 완전히 바꿔 놓았습니다. 즉각적인 문제를 해결했을 뿐만 아니라 프로젝트의 종속성을 더 잘 제어할 수 있게 되었습니다.
Pip Freeze에 의존해 비슷한 문제에 직면했다면 이 접근 방식을 시도해 볼 것을 적극 권장합니다. Python 프로젝트의 안정성과 이식성에 큰 변화를 가져올 수 있는 작은 변화입니다.
위 내용은 Python에서 요구사항.txt를 추출하는 가장 간단한 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!