Docker - 通过pip安装模块的Python依赖项

时间:2017-08-24 16:02:31

标签: python docker

我正在用docker构建一个Django实现。我使用python容器作为基础,但在我的需求文件中,我有以下内容: -

boto==2.43.0
boto3==1.4.4
botocore==1.5.55
ciscoconfparse==1.2.47
Django==1.11.4
django-appconf==1.0.2
django-auth-ldap==1.2.10
django-dbtemplates==2.0
django-debug-toolbar==1.7
easy-thumbnails==2.3
easysnmp==0.2.4
ipaddress==1.0.18
Jinja2==2.9.5
mysqlclient-1.3.10
netmiko==1.2.8
O365==0.9.5
orionsdk==0.0.6
paramiko==2.1.2
python-dateutil==2.6.0
python-ldap==2.4.32
pytz==2016.10
pyOpenSSL==17.2.0
sqlparse==0.2.3
urllib3==1.21.1
joblib==0.11

其中一些依赖项在使用python容器时失败,例如......

   #include <net-snmp/net-snmp-config.h>
                                        ^
  compilation terminated.
  error: command 'gcc' failed with exit status 1

  ----------------------------------------
  Failed building wheel for easysnmp
...
...
   #include "lber.h"
                    ^
  compilation terminated.
  error: command 'gcc' failed with exit status 1

  ----------------------------------------
  Failed building wheel for pyldap
...
...
    In file included from Modules/LDAPObject.c:9:0:
    Modules/errors.h:8:18: fatal error: lber.h: No such file or directory
     #include "lber.h"
                      ^
    compilation terminated.
    error: command 'gcc' failed with exit status 1

    ----------------------------------------
Command "/usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-aufmftap/pyldap/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-fjdz1te2-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-aufmftap/pyldap/

如何为python模块安装操作系统依赖项?在容器内? python容器运行的是什么操作系统让我获得正确的依赖项?

由于

2 个答案:

答案 0 :(得分:4)

假设您使用的是当前最新的python:3.6图像,则需要安装一些其他库。

Dockerfile示例(pip库位于requirements.txt文件中):

FROM python:3.6

RUN apt-get update -y \
    && apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev libsnmp-dev

COPY requirements.txt requirements.txt

RUN pip install -r requirements.txt

相关问题:I can't install python-ldap

答案 1 :(得分:0)

我必须更新运行命令才能使其正常工作

RUN apt-get update -y
RUN apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev libsnmp-dev -y