본문 바로가기
[Programming]/🚀트러블슈팅

[Python] 배포 패키지(requirements.txt) 관리

by 원제트 2024. 2. 28.

❇️ 결론

pip list --format=freeze > requirement_pip_list.txt

 

앞으로는 이 명령어를 사용해서 requirements.txt를 관리하자! 

(txt 앞 파일명은 마음대로 해도 된다)

 

 

❇️ 원래 했던 것

pip freeze > requirements.txt

 

이 명령어를 내리니 requirements.txt 파일에 이상한 문자열이 들어가 있다

 

다음과 같은 식으로!

mkl-random @ file:///home/builder/ci_310/mkl_random_1641843545607/work
numpy @ file:///tmp/abs_653_j00fmm/croots/recipe/numpy_and_numpy_base_1659432701727/work

 

 

-> 나의 경우 mkl-random, numpy, kobert-tokenizer, six 가 비정상적인 포맷으로 표기되어 있었다

 

 

이 상황을 모르던 상태에서

pip install -r requirements.txt

 

이 명령어를 실행하니 위의 비정상적인 포맷들 때문에 패키지 재설치 시 에러가 났다.

안 그래도 조마조마하던 상태인데 진짜 안 되니깐 눈물이 나는 줄 알았다.

 

 

❇️ 문제 발생 원인

블로그들을 찾아보니 'conda install'과 'pip install'을 혼용해

패키지들을 설치하다 보니 발생하는 문제라고 한다.

 

'pip freeze'를 통해 패키지 목록을 추출할 때,

conda와 pip은 다른 포맷으로 목록을 출력해주기 때문이다.

 

 

❇️ 해결 방법

해결 방법은 'pip freeze' 대신 'pip list'를 사용하고,

포맷은 freeze 형태로 지정해주면 된다고 한다

pip list --format=freeze > requirement_pip_list.txt

 

이 명령어를 사용하면, conda install을 사용하였거나 pip install을 사용한 것과 무관하게

모든 패키지 목록을 정상적으로 추출할 수 있다고 한다

 

짜잔

이거 보자마자 기분이 참 좋아졌다

아까 문제가 생겼던 패키지들이 정상적으로 포맷된 것을 확인할 수 있다

# 주석처리된 부분은 다른 문제가 생겨서 잠시 주석 처리한 부분이다

 

 


나의 구원자 블로그 선생님

 

https://richwind.co.kr/216

 

[Python] 패키지 배포 리스트 관리 (ft. Requirements.txt 포맷팅 오류)

이번 포스팅이서 다루고자 하는 내용은 Python 소스를 배포하고 구동하는 발생하는 어려움 중 하나의 대해서 이야기 하고자 한다. 결론부터 이야기하면, Python 소스를 배포할 때 사용하는 패키지

richwind.co.kr