Tidak dapat menginstal beberapa dependensi python requirement.txt
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
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-slim
atau python:3.8
, dan paket python yang mengirimkan roda Linux tidak perlu dikompilasi. Semua paket yang terdaftar di OP requirements.txt
dapat 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-dir
tanda di pip install
untuk menonaktifkan cache.
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