2017-05-18 3 views
4

python:alpineに基づいてDockerコンテナでPythonのScrapyを実行しようとしています。以前はうまくいきましたが、今はScrapyのImage Pipelineを使ってピローをインストールする必要があります。"jpegのヘッダーまたはライブラリファイルが見つかりませんでした" Alpine Linuxのベローズをインストール

は簡略化した例として、私は次のよう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 

しかし、私はこれを構築しようとすると、私は次のものが含まれ、エラーを取得:

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の要件とアルプスの対応するパッケージを見つけようとしましたが、私が見つけられなかったのはlibimagequantだったので、これは「犯人」かもしれません。それにもかかわらず、トレースバックとエラーメッセージにはopenjpegがインストールされていたのに対し、jpegは見つからないと思われるようです。

Dockerfileを変更してpip install Pillowを実行するにはどうすればよいですか?

答えて

8

、誰かの

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/ 

例を私に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 

これで正常に構築されます。

+1

Yeap、私はちょうどそのコメントを実行中の' Dockerfile'に翻訳していました。あなたは私よりも速かった:) – fernandezcuesta

+0

慎重にエラーを読んだ後、私は「ヘッダまたはライブラリファイルがjpegで見つかりませんでした」と気付いた。これらのヘッダーは* -devパッケージで保持されます。そこで私はhttps://pkgs.alpinelinux.org/packages?name=libjpeg*&branch=edgeに行き、最後に "apk --no-cache --update-cache add libjpeg-turbo-dev zlib-dev"を実行しました。トリック。 –

+0

'apk add jpeg-dev'は、「ヘッダやライブラリファイルがjpegで見つかりませんでした」という問題を修正するために必要なものです –

1

あなたがrequirements.txtを作成し、Dockerfileでこれを挿入しようと持っている:後に削除されているようにコメントで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 
関連する問題