Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Docker中使用枕头_Docker_Python Imaging Library_Pillow - Fatal编程技术网

在Docker中使用枕头

在Docker中使用枕头,docker,python-imaging-library,pillow,Docker,Python Imaging Library,Pillow,由于某种原因,我无法在docker中安装python的PIL模块。以下是对我所拥有的内容的描述: requirements.txt Pillow flask redis web_1 | File "app.py", line 1, in <module> web_1 | import PIL web_1 | ImportError: No module named PIL Dockerfile FROM python:2.7 ADD . /code WOR

由于某种原因,我无法在docker中安装python的PIL模块。以下是对我所拥有的内容的描述:

requirements.txt

Pillow
flask
redis
web_1   |   File "app.py", line 1, in <module>
web_1   |     import PIL
web_1   | ImportError: No module named PIL
Dockerfile

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python app.py
app.py

import PIL
命令

$ sudo docker build -t web .
Installing collected packages: Pillow, Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask, redis
Successfully installed Jinja2-2.8 MarkupSafe-0.23 Pillow-2.9.0  Werkzeug-0.10.4 flask-0.10.1 itsdangerous-0.24 redis-2.10.3
---> 91dfb38bd480
Removing intermediate container 4e4ca5801814
Step 4 : CMD python app.py
 ---> Running in e71453f2fab6
 ---> d62996658bd6
 Removing intermediate container e71453f2fab6
 Successfully built d62996658bd6

$ sudo docker-compose up
以下是我得到的: 输出

Pillow
flask
redis
web_1   |   File "app.py", line 1, in <module>
web_1   |     import PIL
web_1   | ImportError: No module named PIL
你知道接下来该怎么办吗

PIL将是 (有时,)

根据“”,您还需要安装其他组件

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev
pip install PIL
另请参见使用Pillow(Python图像库)依赖项的示例

(但请注意,正如所述,这混合了两个模块:PIL和枕头。
枕头是一个经过维护的叉子,是原始的、未维护的PIL的替换品,所以你不应该同时安装这两个。)

要求:

Pillow==2.6.1
Scrapy==0.24.4
Twisted==14.0.2
boto==2.36.0
cffi==0.8.6
characteristic==14.2.0
cryptography==0.6.1
cssselect==0.9.1
lxml==3.4.0
pyOpenSSL==0.14
pyasn1==0.1.7
pyasn1-modules==0.0.5
pycparser==2.10
pymongo==2.8
queuelib==1.2.2
scrapy-mongodb==0.8.0
scrapyd==1.0.1
service-identity==14.0.0
six==1.8.0
w3lib==1.10.0
zope.interface==4.1.1

2019年(4年后),投诉:

解码器/图像处理器仍然缺失,导致出现错误,如
OSError:decoder tiff_lzw不可用

但他补充道:

我发现我的问题源于一个,它抱怨缺少
tiff
东西,但事实上它并没有丢失


如果您像我一样使用docker compose,只需在docker文件中运行
docker compose-up--build
之后将枕头添加到requirements.txt

添加
运行apk add zlib dev jpeg dev gcc musl dev
,然后在requirements.txt中添加枕头“枕头和PIL不能在同一环境中共存。在安装枕头之前,请卸载PIL。“一旦解决了这个问题,我的答案就解决了这个问题。根据您使用的docker映像,您可以检查docker映像的确切相关性。

Perfect!使用a5huynh/scrapyd游乐场/Dockerfile中的配置。但是它在一个新的容器上工作,而不是在现有的容器上。不知道为什么。警告一句,这混合了两个模块:
PIL
Pillow
。枕头是一个维护过的叉子,是原始的、未维护过的PIL的替换品,因此您不应该同时安装。@Hugo Good point:我在答案中加入了您的评论,以提高可视性。2019年python:3.6.8-slim-jessie没有帮助。python映像中已经存在的所有内容(如python本身)都将从Debian存储库重新安装,但解码器/图像处理器仍然缺失,这导致出现错误,如
OSError:decoder tiff_lzw不可用
@DanielW。好啊少了什么?我可以补充什么(4年后)来改善这个答案?