社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

在Dockerfile中安装Numpy需求。导致错误

kevayacht • 4 年前 • 2153 次点击  

我试图在docker容器中安装一个numpy依赖项。(我的代码大量使用它)。在构建容器时,numpy库根本不安装,构建失败。这是在OS raspbian buster/stretch上。但是,在MAC OS上构建容器时,这确实有效。

我怀疑有某种与python相关的问题,但是我一辈子都搞不懂如何让它工作。

我应该指出,从需求文件中删除pip install numpy并在dockerfile中的RUN语句中使用它并不能解决这个问题。

Dockerfile文件:

FROM python:3.6
ENV PYTHONUNBUFFERED 1
ENV APP /app
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir $APP
WORKDIR $APP
ADD requirements.txt .
RUN pip install -r requirements.txt
COPY . .

requirements.txt包含所有项目需求,amounf是numpy。

Step 6/15 : RUN pip install numpy==1.14.3
 ---> Running in 266a2132b078
Collecting numpy==1.14.3
  Downloading https://files.pythonhosted.org/packages/b0/2b/497c2bb7c660b2606d4a96e2035e92554429e139c6c71cdff67af66b58d2/numpy-1.14.3.zip (4.9MB)
Building wheels for collected packages: numpy
  Building wheel for numpy (setup.py): started
  Building wheel for numpy (setup.py): still running...
  Building wheel for numpy (setup.py): still running...

编辑:

所以在评论之后 skybunk 我建议去官方文档,再做一些调试,结果解决方案非常简单。谢谢 空中铺位 荣耀归你。是的。

解决方案:

使用alpine并安装python安装包依赖项,在执行pip安装要求之前升级pip。

这是我编辑过的文件-很明显。。。

FROM python:3.6-alpine3.7

RUN apk add --no-cache --update \
    python3 python3-dev gcc \
    gfortran musl-dev \
    libffi-dev openssl-dev

RUN pip install --upgrade pip

ENV PYTHONUNBUFFERED 1
ENV APP /app

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir $APP
WORKDIR $APP

ADD requirements.txt .
RUN pip install -r requirements.txt

COPY . .
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50905
 
2153 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Adiii
Reply   •   1 楼
Adiii    4 年前

从错误日志来看,它似乎不是来自numpy。但是您可以在requirement.txt之前安装numpy并验证它是否正常工作。

FROM python:3.6
RUN pip install numpy==1.14.3

建造

docker build -t numpy .

运行和测试

docker run numpy bash -c "echo import numpy as np > test.py ; python test.py"

所以在导入时不会出现错误。

或者你可以试试 numpy 作为一个高山包

FROM python:3-alpine3.9
RUN apk add --no-cache py3-numpy

或者发布requirement.txt。

skybunk
Reply   •   2 楼
skybunk    4 年前

要在蟒蛇3上使用Numpy,我们首先要去 official documentation 找到构建Numpy所需的依赖项。

主要是这5个包及其依赖项必须安装:

  1. 蟒蛇3-70 mb
  2. 蟒蛇3 dev-25 mb
  3. gfortran-20 mb
  4. gcc-70 mb
  5. musl dev-10 mb(用于跟踪意外行为/调试)

一个POC设置看起来像这样-

文档文件:

FROM gliderlabs/alpine
ADD repositories.txt /etc/apk/repositories

RUN apk add --no-cache --update \
    python3 python3-dev gcc \
    gfortran musl-dev

ADD requirements-pip.txt .
RUN pip3 install --upgrade pip setuptools && \
    pip3 install -r requirements-pip.txt

ADD . /app
WORKDIR /app
ENV PYTHONPATH=/app/
ENTRYPOINT python3 testscript.py

存储库.txt

http://dl-5.alpinelinux.org/alpine/v3.4/main

需求-pip.txt

numpy

testscript.py测试脚本

import numpy as np

def random_array(a, b):
    return np.random.random((a, b))

a = random_array(2,2)
b = random_array(2,2)
print(np.dot(a,b))

运行此-克隆 alpine ,使用“docker build-t gliderlabs/alpine”构建它

生成并运行Dockerfile

docker build -t minidocker .
docker run minidocker

输出应该是这样的-

[[ 0.03573961 0.45351115]
[ 0.28302967 0.62914049]]

这是 git link ,如果你想测试一下