简体   繁体   中英

Cannot install some of requirements.txt python dependencies

I cannot figure out why when installing my python dependencies from requirements.txt pip don't complain, but when I do it from docker container, I got the following error message:

The requirements.txt content:

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

I've created my container like below:

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

I've tried to install my dependencies using this command:

pip install -r requirements.txt

Bellow some screenshot:

在此处输入图像描述

在此处输入图像描述

Alpine Linux uses musl C, but most python wheel files are compiled for glib C. Therefore, packages that have extensions written in C/C++ need to be compiled. If you do not have a compiler installed, you will get an error.

Instead of installing a compiler and dependencies that packages might require at compile time, I suggest using a python Docker image that is not based on Alpine. For example, you can use python:3.8-slim or python:3.8 , and python packages that ship Linux wheels will not have to be compiled. All of the packages listed in OP's requirements.txt can be installed from pre-compiled wheels if using python:3.8-slim .

So you can use these commands

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

If you are concerned about the size of the resulting image, you can also use the --no-cache-dir flag in pip install to disable caching.

The solution was to update alpine-SDK, which is a "meta-package" that pulls in the essential packages used to build new packages."

apk add --update alpine-sdk

I found the solution here:

Github: docker alpine issues

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM