在 docker 文件中安装 python 包 [英] Install python package in docker file

查看:13
本文介绍了在 docker 文件中安装 python 包的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的 docker 文件中,我想安装 med2image python 包(https://github.com/FNNDSC/med2image).我使用以下代码:

来自 ubuntu:16.04运行 apt-get 更新 &&apt-get install -y --no-install-recommends python3.5python3点&&apt-get clean &&
m -rf/var/lib/apt/lists/*运行 pip 安装 nibabel pydicom matplotlib 枕头运行 pip install med2image

但是当我想构建图像时出现以下错误:

下载 https://files.pythonhosted.org/packages/6f/e5/948b023c7feb72adf7dfb26d90a13c838737bbf52be704f5ddd0878e3264/med2image-1.1.2.tar.gz命令 python setup.py egg_info 的完整输出:抱歉,仅支持 Python 3.5+.--------------------------------------命令python setup.py egg_info"失败,错误代码 1 在/tmp/pip-install-FnNb_S/med2image/命令/bin/sh -c pip install med2image"返回非零代码:1

我该怎么办?!

解决方案

推荐基础镜像

正如我在评论中所建议的,您可以编写一个如下所示的 Dockerfile:

FROM python:3运行 pip install --no-cache-dir --upgrade pip &&pip install --no-cache-dir nibabel pydicom matplotlib 枕头 &&pip install --no-cache-dir med2imageCMD [猫",/etc/os-release"]

上面的命令示例可以在运行时(docker build --pull -t test . && docker run --rm -it test)确认这个镜像是基于 GNU/Linux 发行版Debian stable".

通用 Dockerfile 模板

最后给出一个全面的答案,请注意,关于 Python 依赖项的一个好的做法是在专用文本文件中以声明方式指定它们(按字母顺序,以方便查看和更新​​),所以对于您的示例,您可能需要编写以下文件:

<块引用>

requirements.txt

matplotlibmed2image尼巴​​贝尔枕头pydicom

<块引用>

并使用以下通用 Dockerfile

FROM python:3工作目录/usr/src/app复制 requirements.txt ./运行 pip install --no-cache-dir --upgrade pip &&pip install --no-cache-dir -r requirements.txt复制 ..CMD [python"、./your-daemon-or-script.py"]

更准确地说,这是Docker官方镜像文档中建议的方法蟒蛇,§.如何使用这个图像

In my docker file, I want to install med2image python package (https://github.com/FNNDSC/med2image). I use the following code:

FROM ubuntu:16.04
RUN apt-get update && apt-get install -y --no-install-recommends 
    python3.5 
    python3-pip 
    && 
apt-get clean && 
rm -rf /var/lib/apt/lists/*
RUN pip install nibabel pydicom matplotlib pillow
RUN pip install med2image

But I get the following error when I want to build the image:

Downloading https://files.pythonhosted.org/packages/6f/e5/948b023c7feb72adf7dfb26d90a13c838737bbf52be704f5ddd0878e3264/med2image-1.1.2.tar.gz
Complete output from command python setup.py egg_info:
Sorry, only Python 3.5+ is supported.

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in  /tmp/pip-install-FnNb_S/med2image/
The command '/bin/sh -c pip install med2image' returned a non-zero code: 1

What should I do?!

解决方案

Recommended base image

As suggested in my comment, you could write a Dockerfile that looks like:

FROM python:3

RUN pip install --no-cache-dir --upgrade pip && 
    pip install --no-cache-dir nibabel pydicom matplotlib pillow && 
    pip install --no-cache-dir med2image

CMD ["cat", "/etc/os-release"]

And the command example above could confirm at runtime (docker build --pull -t test . && docker run --rm -it test) that this image is based on the GNU/Linux distribution "Debian stable".

Generic Dockerfile template

Finally to give a comprehensive answer, note that a good practice regarding Python dependencies consists in specifying them in a declarative way in a dedicated text file (in alphabetical order, to ease review and update) so that for your example, you may want to write the following file:

requirements.txt

matplotlib
med2image
nibabel
pillow
pydicom

and use the following generic Dockerfile

FROM python:3

WORKDIR /usr/src/app

COPY requirements.txt ./

RUN pip install --no-cache-dir --upgrade pip && 
    pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./your-daemon-or-script.py" ]

To be more precise, this is the approach suggested in the documentation of the Docker official image python, §. How to use this image

这篇关于在 docker 文件中安装 python 包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆