1. 에러 원인
Using cached psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (22 kB)
Collecting intervaltree>=3.0 (from pwntools)
Using cached intervaltree-3.1.0.tar.gz (32 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [1 lines of output]
ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
Bash
복사
pip로 일부 패키지 설치 시 아래와 같은 문구가 출력되면서 설치가 제대로 안되는 것을 확인할 수 있다.
•
error: subprocess-exited-with-error
•
python setup.py egg_info did not run successfully
•
error: metadata-generation-failed
에러 원인은 크게 2가지로 구분할 수 있다.
1.
setuptools 문제 - 패키지를 설치하는 과정에서 setup.py를 실행해야 하지만, 설치 환경에 setuptools 가 제대로 설정되지 않아 에러가 발생
2.
빌드 환경 문제 - pip가 패키지 메타데이터를 생성하려고 시도했으나, 빌드 환경에 필수적으로 필요한 setuptools가 누락된 상태입니다.
2. 해결 방법
문제 해결 방법은 setuptools 이슈 확인 → 빌드 환경 이슈 순으로 확인한다.
•
해결 방법 1 : setuptools 업데이트 및 패키지 설치
pip3 install --upgrade --ignore-installed setuptools
pip3 install --upgrade wheel
pip3 install intervaltree
pip3 install <Package name>
Bash
복사
•
해결 방법 2 : 관리자 권한으로 설치(권장하지 않음)
pip3 install <Package name> --user
Bash
복사
•
해결 방법 3 : 특정 패키지 버전으로 설치
pip3 install <Package name>==X.X.X
Bash
복사
•
해결 방법 4 : PEP-517 방식으로 설치(작성자는 이 방법으로 해결함)
pip3 install <Package name> --use-pep517
Bash
복사
◦
PEP 517이란?
▪
Python 패키지의 빌드 과정을 표준화한 제안서로, 기존에 setup.py를 직접 실행하던 방식에서 벗어나 빌드 백엔드(build backend)를 통해 패키지를 빌드하도록 설계
▪
패키지의 pyproject.toml 파일에 정의된 빌드 시스템( setuptools, poetry )을 이용하여 빌드
▪
setup.py 없이도 빌드가 가능하며, 더 유연하고 안정적인 패키지 빌드 환경을 제공