공부일지

[Python] 버전 충돌 해결을 위해 pip 패키지 전체 삭제하는 법 본문

Computer/Trouble Shooting

[Python] 버전 충돌 해결을 위해 pip 패키지 전체 삭제하는 법

이르리의 공부일지 2024. 9. 20. 23:04

작성일 2024-09-10

 

요약


문제

버전 충돌로 인해 설치하려던 패키지 일부가 누락됨.

 

원인

패키지 설치 명령어 복붙했다가 로컬 파이썬 버전이랑 안 맞아서였음.

 

해결

패키지 전체 삭제하고 다시 설치함.

 

공유

패키지 전체 삭제 pip를 이용해 간단히 하는 법 

 

 

 

상황


Airflow를 로컬에 설치할 때 관련 패키지가 다 깔리지 않고

일부가 누락됐다. 

 

에어플로 설치 튜토리얼 목차 일부

 

버전충돌 때문이라고 짐작했다.

처음에 나는 로컬에 PyPI 기반으로 Airflow를 설치하고자 했다.

'Installation tools' 항목에 있는 코드를 입력했는데

문제는 여깄었다.

 

코드를 잘 보면 pip install 구문에 있는 Constraint URL 부분에

Python 버전이 들어가는데

(나는 앞에 에어플로 버전만 봤지 URL을 유심히 보지 않았었다.)

그게(3.8) 내 로컬 Python 버전(3.11)과 맞지 않아서

일부 패키지가 완전히 설치되지 않는 문제가 생겼던 것이다!

 

애초에 Constraint URL에 파이썬 버전이 적혀있는지를 알았거나,

아니면 범용적으로 리눅스 변수를 통해 로컬 파이썬 버전을 자동으로 입력해주는 

'Installation and upgrade scenarios' 항목의 설치 코드를 입력했어야 했다.

 

Installation tools 항목 설치 코드

pip install "apache-airflow[celery]==2.10.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.10.1/constraints-3.8.txt"

 

Installation  and upgrade scenarios 항목 설치 코드

에어플로우 튜토리얼 설치 내용 일부 - Installation from PyPI

AIRFLOW_VERSION=2.10.1

# Extract the version of Python you have installed. If you're currently using a Python version that is not supported by Airflow, you may want to set this manually.
# See above for supported versions.
PYTHON_VERSION="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"

CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
# For example this would install 2.10.1 with python 3.8: https://raw.githubusercontent.com/apache/airflow/constraints-2.10.1/constraints-3.8.txt

pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

 

 

 

해결방법


시도1

문제 있는 특정 패키지만 다운 그레이드 한다.(or vice versa: 문제 없는 패키지만 업그레이드 한다.)

 

시도2

그냥 밀고 다시 깔기로 한다.

전체 삭제하는 방법은 아래와 같다.

  1. requirements.txt로 현재 환경에 설치된 패키지 목록을 뽑아준다.
pip freeze >> requirements.txt

 

requirements.txt로 뽑아낸 패키지 목록

  1. requirements.txt를 이용해, 현재 환경에 설치된 패키지 전체를 삭제한다.
pip uninstall -r requirements.txt -y

option description
-r: remove(삭제)
-y: yes!(할거냐? 예쓰!)

 

3. 패키지 재설치

그 다음에 다시 튜토리얼 'Installation and upgrade scenarios'에 있는

범용 가능한 명령어로 다시 패키지를 설치해준다.

 

 

돌아보며


아니 상식적으로 뒤에 3.8 숫자만 보고 파이썬 버전일 줄 누가 알았겠냐고..!

말하고 싶지만

Contraint URL 일부

 

앞으로는 튜토리얼에 있는 코드라고 바로 적용하지 말고

버전같은 상수가 있는지 확인하도록 하자.