requirements.txt python 종속성 중 일부를 설치할 수 없습니다.
requirements.txt pip에서 Python 종속성을 설치할 때 불평하지 않는 이유를 알 수 없지만 Docker 컨테이너에서 수행하면 다음 오류 메시지가 나타납니다.
requirements.txt 콘텐츠 :
Flask~=1.1
grpcio
grpcio-tools
protobuf
iexfinance
numpy
pandas
pandas_datareader
pymongo
다음과 같이 컨테이너를 만들었습니다.
docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-alpine
이 명령을 사용하여 내 종속성을 설치하려고했습니다.
pip install -r requirements.txt
일부 스크린 샷을 벨로우즈 :


답변
Alpine Linux는 musl C를 사용하지만 대부분의 python wheel 파일은 glib C 용으로 컴파일됩니다. 따라서 C / C ++로 작성된 확장이있는 패키지를 컴파일해야합니다. 컴파일러가 설치되어 있지 않으면 오류가 발생합니다.
컴파일 타임에 패키지에 필요할 수있는 컴파일러 및 종속성을 설치하는 대신 Alpine을 기반으로하지 않는 Python Docker 이미지를 사용하는 것이 좋습니다. 예를 들어, 사용 python:3.8-slim
하거나 python:3.8
, 리눅스 바퀴를 제공 파이썬 패키지는 컴파일 할 필요가 없습니다. OP에 나열된 모든 패키지는 .NET을 requirements.txt
사용하는 경우 미리 컴파일 된 휠에서 설치할 수 있습니다 python:3.8-slim
.
따라서 다음 명령을 사용할 수 있습니다.
docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-slim
pip install -r requirements.txt
결과 이미지의 크기가 염려되는 경우 --no-cache-dir
플래그를 사용하여 pip install
캐싱을 비활성화 할 수도 있습니다 .
해결책은 새로운 패키지를 빌드하는 데 사용되는 필수 패키지를 가져 오는 "메타 패키지"인 alpine-SDK를 업데이트하는 것이 었습니다. "
apk add --update alpine-sdk
여기에서 해결책을 찾았습니다.
Github : Docker 알파인 문제