使用virtualenv或buildout安装PIL的问题

当我使用easy_install或build安装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同样的东西,它使用鸡蛋。

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

pypi(由作者)打包的PIL版本与setuptools不兼容,因此不易安装。 人们已经在别处创build了easy_installable版本。 目前,您需要指定一个find-links 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 

要在构build中包含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月:只要使用枕头,并做好了。 :-)明显地等待原来的包裹被修好还没有回报。

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

  • 完整的setuptools兼容性
  • 更快的发布周期
  • 没有与PIL不同的图像代码改变(即,它旨在跟踪所有PIL图像代码改变,并且没有向上游报告它们而不做任何自己的改变)。
  • Windows二进制文件

如果PIL曾经做过枕头,那么叉子就会死亡。 在此之前,我们有枕头。

免责声明 :我是叉作者,枕头主要是为了使我的工作更容易(虽然看到其他人也使用它)是很好的。

编辑 :枕头2.0.0发布于2013年3月15日。它提供了Python 3支持和许多错误修复/增强。 虽然我们仍然试图跟踪上游PIL的变化(不幸的是,幸好取决于你如何看待它),枕头已经开始偏离PIL。

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

sudo apt-get install python2.7-dev

之后, pip install pil工作。

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

在您的全局Python站点包中安装PIL,方法是执行.exe: http : //www.pythonware.com/products/pil/

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