如何获取Python Pillow(PIL)版本?

16

我希望在Mac OS X计算机上安装PIL(Python Imaging Library)版本。我之前已经安装了Pillow,这是PIL的一个友好的分支。

我尝试过:

import PIL
print('PIL',PIL.__version__)

我遇到了错误:

AttributeError: module 'PIL' has no attribute '__version__'

这个问题和答案与Mac OS X没有任何特定关系,从标题中删除它会很好,这会让人们在谷歌上搜索这个问题时不会被误导。 - David Parks
5个回答

21

请使用PIL.__version__或者Image.__version__

Pillow版本6.0.0之前,可以通过以下变量名称访问它的版本字符串:

>>> PIL.version.__version__
'5.1.0'
>>> PIL.PILLOW_VERSION
'5.1.0'
>>> PIL.__version__
'5.1.0'
>>>

不要将其与Pillow构建的最后一个PIL版本(因而仍在使用)混淆:

>>> PIL.VERSION
'1.1.7'

关于PIL的分支,文档中没有相关信息:https://pillow.readthedocs.io/en/5.1.x/about.html#why-a-fork

但是,PIL的主页 上写道:

状态
目前的免费版本是PIL 1.1.7。此版本支持Python 1.5.2及更高版本,包括2.5和2.6。3.X版本将在以后发布。

该版本发布日期为“2009年11月15日”。

这证实了这只是PIL的最后一个发行版本。


用于未来/进一步挖掘:

这些源文件定义了版本号字符串:https://github.com/python-pillow/Pillow/blob/master/src/PIL/version.pyhttps://github.com/python-pillow/Pillow/blob/master/src/PIL/__init__.py, 或者在仓库中搜索所有出现的__version__

(在我的Windows上,已安装到%LocalAppData%\Programs\Python\Python36\Lib\site-packages\PIL\version.py


**更新**

https://pillow.readthedocs.io/en/stable/releasenotes/5.2.0.html

5.2.0 API变更和弃用

这些版本常量已被弃用。 VERSION 将在Pillow 6.0.0中删除,PILLOW_VERSION 将在此之后删除。

`PIL.VERSION` (old PIL version 1.1.7)
`PIL.PILLOW_VERSION`
`PIL.Image.VERSION`
`PIL.Image.PILLOW_VERSION`

请使用PIL.__version__替代。

https://pillow.readthedocs.io/en/stable/releasenotes/6.0.0.html

6.0.0向后不兼容变化:版本VERSION已被移除,使用__version__替代。

>>> import PIL
>>> PIL.__version__
'8.4.0'
>>> from PIL import Image
>>> Image.__version__
'8.4.0'
>>> Image.__version__ is PIL.__version__
True

7

获取PIL版本,执行以下操作

>>> PIL.VERSION
'1.1.7'

编辑:

这只提供了PIL版本而非Pillow版本。 详见此回答以获得更多详细信息。


1
谢谢!我找到了另一个解决方案,但你的也很好用! - Claude COULOMBE
1
请注意,这仅返回“PIL”的最后一个版本字符串,而“pillow”是基于它的(但他们保留了模块名称)。 - handle
1
澄清一下:这不会返回Pillow的版本。 - handle

1
最终我找到了一个解决方案:

from PIL import Image 
print('PIL',Image.VERSION)

1
这并不返回Pillow的版本,而是(旧版)底层PIL版本。它与PIL.VERSION相同(来源)。 - handle

1
我尝试了上面的答案,但都没有起作用,但这个方法可以(适用于版本8.0.1:
from PIL import Image
dir(Image)
# AH HAH!  there is an attribute __version__
print(Image.__version__)

8.0.1


0

如果你不是导入整个 PIL 库,而是像这样:

from PIL import Image, ImageTk, ImageDraw, ImageFont

那么这个可以工作:

print('Image.VERSION', Image.VERSION)
print('Image.PILLOW_VERSION', Image.PILLOW_VERSION)

结果:

Image.VERSION 1.1.7
Image.PILLOW_VERSION 3.1.2

注意:Ubuntu 16.04.6 LTS使用的是早期版本的Pillow,该版本是在2016年进行测试的。 Canonical(Ubuntu的开发公司)似乎不喜欢在测试之后升级Python版本。


这两个功能自5.2.0版本以前就已被弃用(在您发布此答案之前)。 - handle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接