Tidak dapat menginstal beberapa dependensi python requirement.txt

Dec 27 2020

Saya tidak tahu mengapa ketika menginstal dependensi python saya dari requirement.txt pip tidak mengeluh, tetapi ketika saya melakukannya dari docker container, saya mendapat pesan kesalahan berikut:

Konten persyaratan.txt:

Flask~=1.1
grpcio
grpcio-tools
protobuf
iexfinance
numpy
pandas
pandas_datareader
pymongo

Saya telah membuat penampung saya seperti di bawah ini:

docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-alpine

Saya sudah mencoba menginstal dependensi saya menggunakan perintah ini:

pip install -r requirements.txt

Di bawah beberapa tangkapan layar:

Jawaban

2 jakub Dec 27 2020 at 04:59

Alpine Linux menggunakan musl C, tetapi kebanyakan file roda python dikompilasi untuk glib C. Oleh karena itu, paket yang memiliki ekstensi yang ditulis dalam C / C ++ perlu dikompilasi. Jika Anda tidak memiliki kompiler yang diinstal, Anda akan mendapatkan pesan kesalahan.

Alih-alih menginstal kompiler dan dependensi yang mungkin diperlukan paket pada waktu kompilasi, saya sarankan menggunakan image Docker python yang tidak didasarkan pada Alpine. Misalnya, Anda dapat menggunakan python:3.8-slimatau python:3.8, dan paket python yang mengirimkan roda Linux tidak perlu dikompilasi. Semua paket yang terdaftar di OP requirements.txtdapat diinstal dari roda yang telah dikompilasi sebelumnya jika menggunakan python:3.8-slim.

Jadi Anda bisa menggunakan perintah ini

docker run -it -p 8080:50051 -v ${pwd}:/app -w "/app" python:3.8-slim
pip install -r requirements.txt

Jika Anda khawatir tentang ukuran gambar yang dihasilkan, Anda juga dapat menggunakan --no-cache-dirtanda di pip installuntuk menonaktifkan cache.

MselmiAli Dec 27 2020 at 05:00

Solusinya adalah memperbarui alpine-SDK, yang merupakan "paket meta" yang menarik paket penting yang digunakan untuk membuat paket baru. "

apk add --update alpine-sdk

Saya menemukan solusinya di sini:

Github: masalah alpine buruh pelabuhan