使用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仍然是一个“让你的手脏”的环境…