我收到一个错误,在两台不同的计算机上读取相同的lena.jpg文件会产生两个不同的校验和。
甚至更奇怪的是,当我运行md5sum lena.jpg时,我在两台机器上获得相同的md5总和,因此文件是相同的。
此外,当我加载png而不是jpeg时,数字似乎匹配。这让我相信Pillow在两台不同的机器上,或者至少是用于读取jpeg文件的库之间存在脱节。
有没有办法检查Pillow正在使用哪个版本的libjpeg(最好是在Python中)?
两台计算机都是Ubuntu,虽然一台是12.04,一台是14.04(我也在Mac上测试了它,并且得到了与14.04盒子相同的值)
答案 0 :(得分:6)
首先,找到Python安装正在使用的PIL蛋:
>>> import PIL
>>> PIL.__path__
['/usr/local/python/2.7.3/lib/python2.7/site-packages/PIL']
然后在该目录中找到_imaging.so
并使用ldd
(Linux)或otool -L
(OS X)查找已链接的libjpeg
版本:
<强>的Linux 强>
$ ldd /usr/local/python/2.7.3/lib/python2.7/site-packages/PIL/_imaging.so
linux-gate.so.1 => (0x00641000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00f00000)
libz.so.1 => /lib/libz.so.1 (0x006f4000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00fad000)
libc.so.6 => /lib/libc.so.6 (0x0021b000)
/lib/ld-linux.so.2 (0x0067e000)
Mac OS X
$ otool -L /Users/lukas/src/pillow-env/lib/python2.7/site-packages/PIL/_imaging.so
/Users/lukas/src/pillow-env/lib/python2.7/site-packages/PIL/_imaging.so:
/usr/local/lib/libjpeg.8.dylib (compatibility version 13.0.0, current version 13.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/local/lib/libtiff.5.dylib (compatibility version 8.0.0, current version 8.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
答案 1 :(得分:1)
试试这个:
ldd path/to/your/PIL/_*.so
如果您使用的是virtualenv,请尝试在您的VIRTUALENV_HOME上找到PIL,通常是在
下~/.virtualenvs/$VIRTUAL_ENV/lib/python2.7/site-packages/PIL
如果您使用的是ubuntu软件包,请使用dpkg查找您的枕头/ PIL安装位置。