使用virtualenv或buildout安装PIL的问题


70

当我使用easy_install或buildout安装PIL时,其安装方式必须是“导入映像”,而不是“从PIL导入映像”。

但是,如果我执行“ apt-get install python-imaging”或使用“ pip -E test_pil install PIL”,则一切正常。

以下是我如何尝试使用virtualenv安装PIL的示例:

# virtualenv --no-site-packages test_pil
# test_pil/bin/easy_install PIL
# test_pil/bin/python
Python 2.5.1 (r251:54863, Feb  6 2009, 19:02:12) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PIL

我看到,easy_install将PIL打包到Egg中,而PIP没有。与buildbot相同,它使用鸡蛋。

如何使用easy_install或buildout正确安装PIL?

Answers:


96

pypi上的PIL版本(由作者提供)与setuptools不兼容,因此不是easy_installable。人们在其他地方创建了easy_installable版本。当前,您需要指定一个查找链接URL并使用pip获得一个好的包:

pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

通过pip install与一起使用,--no-index可以避免冒发现PIL的PyPI(非固定)原件的风险。如果要使用easy_install,则必须使用直接链接到更正版本的源tarball。easy_install仍然顽固地使用find-links URL上的PyPI链接:

easy_install http://dist.plone.org/thirdparty/PIL-1.1.7.tar.gz

要将PIL包含在扩展中,请使用相同的版本引脚指定egg或使用“版本”部分:

[buildout]
parts =
find-links =
    http://dist.plone.org/thirdparty/
eggs =
    PIL
versions = versions

[versions]
PIL = 1.1.7

2011年3月修改:解决包装问题的修补程序现已合并到PIL的开发树中,因此此解决方法可能很快就会过时。

编辑2013年2月:只需使用Pillow即可完成。:-)显然,等待原包修复还没有回报。


是否已通知作者此事,以便也将其固定在pypi上?
2010年

1
我尝试了您的示例中显示的版本,但仍然遇到相同的问题。我最终从pythonware网站使用了安装程序,然后将PIL目录和PIL.pth文件复制到virtualenv,它为我解决了这个问题。
tponthieux 2011年

14
枕头是PIL的叉子,旨在固定包装,似乎是一种即用型的替代品。
tvon 2011年

1
为我解决了这个问题。只需确保先删除损坏的PIL。
Dan Abramov

4
@MartijnPieters六个月后,该更改仍未发布,这是支持fork IMHO的一个很好的理由。此外,Pillow基本上可以完成与上面接受的答案相同的操作,而不必指定替代索引。
2011年

79

采用 枕头:“友好的” PIL叉:-)它提供:

  • 完全的设置工具兼容性
  • 更快的发布周期
  • 没有与PIL不同的图像代码更改(即,它旨在跟踪所有PIL图像代码更改,并且在不向上游报告的情况下不进行任何更改)。
  • Windows二进制文件

如果PIL确实做到了Pillow所做的事情,那么叉子就会死掉。在此之前,我们有Pillow。

免责声明:我是fork的作者,Pillow的创建主要是为了简化我的工作(尽管很高兴看到其他人也使用它)。

编辑:2013年3月15日发布了Pillow 2.0.0。它提供Python 3支持和许多错误修复/增强功能。尽管我们仍然尝试跟踪上游PIL的变化,但(不幸的是或幸运的是,取决于您的看法)Pillow已开始偏离PIL。


感谢您的工作!我还尝试使我的金字塔构建与PIL一起使用,但是现在我发现了这一讨论,我用Pillow代替了它,并且它起作用了。:-)
therealmarv 2012年

1
感谢枕头@aclark!每次我构建新机器都经历了至少一年的PIL苦苦挣扎,并且在使用virtualenv,buildout和setuptools在Ubuntu上对JPEG和PNG的支持一直遇到问题之后,我找到了Pillow!现在,只需一个setuptools定义即可。万分感谢!
JeromeParadis 2012年

我认为这不再是必需的-现在可以使用设置工具了吗?
兰德尔·亨特

@Ranman这取决于您所说的“使用setuptools”。自从分叉于2010年制造以来,还没有新的PIL版本发布,如果有帮助的话。
aclark 2012年

访问该Image模块的标准方法是from PIL import Image。但是在PIL中也有import Image,而且在很多地方我都能找到。我在Windows上有Pillow 3.0.0,它不支持裸机import Image。如何解决而不破解相关代码?
Tomasz Gandor

8

对于Ubuntu,我发现我需要为python版本(2.7)安装C头文件包

sudo apt-get install python2.7-dev

之后,pip install pil工作了。


在尝试在Ubuntu virtualenv中安装PIL时,我还需要Python.h文件,此问题已修复!
Deep-B,

6

在Windows上,我在virtualenv中安装了PIL,如下所示:

通过执行http://www.pythonware.com/products/pil/中的.exe,将PIL安装在全局python网站程序包中

然后,作为“自己动手”,将C:\ Python25 \ Lib \ site-packages中的PIL.pth文件和PIL目录复制到您的virtualenv site-packages目录中。是的,python仍然是一个“让您的手变脏”的环境...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.