为什么我可以通过两种不同的方式导入PIL(为什么这样做有问题)?

时间:2013-12-04 02:34:41

标签: python python-imaging-library

这两种工作:

import Image

from PIL import Image

导入本身永远不会失败,但是在整个代码库中,我正在使用这两种样式。有时一种风格比另一种风格更受欢迎,因为其中一种风格不能正常工作。作为一个具体示例,open模块无法使用Image方法,除非我使用from PIL import Image版本。

以下是最近的repl会话的结果:

Python 2.6.6 (r266:84292, Apr 12 2013, 18:59:33)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Image
>>> Image
<module 'Image' from '/path/to/python2.6/site-packages/PIL/Image.pyc'>
>>> from PIL import Image as Img
>>> Img
<module 'PIL.Image' from '/path/to/python2.6/site-packages/PIL/Image.pyc'>
>>> Img == Image
False

如果我将代码库更改为仅使用其中一种样式来修复问题,我有预感,但我仍然不确定为什么python会将相同的文件作为两个单独的模块导入。我也无法理解为什么这些模块似乎以不好的方式进行交互。有什么见解吗?

2 个答案:

答案 0 :(得分:1)

前段时间我试图使用PIL,但遇到了很大困难。我的问题与你的问题类似。我最终找到了一个名为Pillow的模块,它似乎是PIL的一个分支,它对我有用。这里有一些链接,我希望它对你有所帮助。

这里有一些文档:

http://pillow.readthedocs.org/en/latest/

在此处下载:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow

答案 1 :(得分:1)

检查sys.path。我打赌它包括PIL所在的目录(/path/to/python2.6/site-packages/),以及PIL作为其一部分的子目录(/path/to/python2.6/site-packages/PIL/)。您不应该包含包含子目录的那个。

import sys
print sys.path