“在jpeg上找不到头文件或库文件”在Alpine Linux上安装Pillow

我想在基于python的Docker容器中运行Python的Scrapy :alpine 。 这是工作之前,但现在我想使用Scrapy的图像pipe道 ,这需要我安装枕头。

作为一个简单的例子,我尝试了下面的Dockerfile

 FROM python:alpine RUN apk --update add libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc openssl-dev curl RUN apk add libjpeg zlib tiff freetype lcms libwebp tcl openjpeg RUN pip install Pillow 

但是,当我试图build立这个我得到一个错误,其中包含以下内容:

 Traceback (most recent call last): File "/tmp/pip-build-ft5yzzuv/Pillow/setup.py", line 744, in <module> zip_safe=not debug_build(), ) File "/usr/local/lib/python3.6/distutils/core.py", line 148, in setup dist.run_commands() File "/usr/local/lib/python3.6/distutils/dist.py", line 955, in run_commands self.run_command(cmd) File "/usr/local/lib/python3.6/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/usr/local/lib/python3.6/site-packages/setuptools/command/install.py", line 61, in run return orig.install.run(self) File "/usr/local/lib/python3.6/distutils/command/install.py", line 545, in run self.run_command('build') File "/usr/local/lib/python3.6/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/usr/local/lib/python3.6/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/usr/local/lib/python3.6/distutils/command/build.py", line 135, in run self.run_command(cmd_name) File "/usr/local/lib/python3.6/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/usr/local/lib/python3.6/distutils/dist.py", line 974, in run_command cmd_obj.run() File "/usr/local/lib/python3.6/distutils/command/build_ext.py", line 339, in run self.build_extensions() File "/tmp/pip-build-ft5yzzuv/Pillow/setup.py", line 545, in build_extensions raise RequiredDependencyException(f) __main__.RequiredDependencyException: jpeg During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-build-ft5yzzuv/Pillow/setup.py", line 756, in <module> raise RequiredDependencyException(msg) __main__.RequiredDependencyException: The headers or library files could not be found for jpeg, a required dependency when compiling Pillow from source. Please see the install instructions at: https://pillow.readthedocs.io/en/latest/installation.html 

我经历了https://pillow.readthedocs.io/en/latest/installation.html的要求,并试图find相应的软件包,虽然我找不到libimagequant ,所以这可能是'罪魁祸首”。 尽pipe如此,它的追踪和错误消息似乎是说, jpeg缺失,而我已经安装了openjpeg

我如何修改Dockerfile使pip install Pillow运行?

在稍后似乎已被删除的评论中,有人指向我https://github.com/python-pillow/Pillow/blob/c05099f45c0d94a2a98c3609a96bdb6cf7446627/depends/alpine_Dockerfile 。 基于该Dockerfile我修改我自己的如下:

 FROM python:alpine RUN apk --update add libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc openssl-dev curl RUN apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev RUN pip install Pillow 

现在它build立成功。

你看过这个QA吗? 在Linux中安装Pillow(Python模块)时失败

他们说你必须更新你的点子并安装libjpeg-dev。

你有没有尝试创build一个requirements.txt并将其插入到Dockerfile中:

  RUN apt-get update -qq && apt-get install build-essential g++ flex bison gperf ruby perl \ mysql-client \ libsqlite3-dev libmysqlclient-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev \ libpng-dev libjpeg-dev python libx11-dev libxext-dev -y ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ COPY . /code RUN pip install -r requirements.txt ADD . /code/ 

requirements.txt的例子

 Django==1.9.7 django-appconf==1.0.1 django-filer==1.2.5 django-filter==0.15.0 django-grappelli==2.8.1 django-image-cropping==1.0.3 django-mptt==0.8.6 django-nested-admin==3.0.10 django-nested-inline==0.3.6 django-polymorphic==0.8.1 django-taggit==0.21.2 django-tinymce==2.4.0 dnspython==1.15.0 easy-thumbnails==2.3 enum34==1.1.2 funcsigs==0.4 idna==2.1 ipaddress==1.0.17 mercurial==3.7.3 mock==1.3.0 mysql-python ndg-httpsclient==0.4.2 parsedatetime==2.1 pbr==1.8.0 Pillow==3.3.1 psutil==3.4.2 pyasn1==0.1.9 PyICU==1.9.2 pyOpenSSL==16.1.0 pyRFC3339==1.0 python-augeas==0.5.0 python-monkey-business==1.0.0 python2-pythondialog==3.3.0 pytz==2014.10 requests==2.11.1 six==1.10.0 Unidecode==0.4.19 urllib3==1.16 zope.component==4.2.2 zope.event==4.2.0 zope.hookable==4.0.4 zope.interface==4.1.3