当我使用 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?
pypi 上(作者)打包的 PIL 版本与 setuptools 不兼容,因此无法 easy_installable。人们在其他地方创建了 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 仍然顽固地使用 PyPI 链接而不是 find-links URL:
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 即可完成。 :-) 显然等待原始包被修复并没有得到回报。
使用 Pillow:“友好的”PIL 叉 :-) 它提供:
如果 PIL 完全按照 Pillow 的做法,那么分叉就会消亡。在那之前,我们有枕头。
免责声明:我是 fork 作者,创建 Pillow 主要是为了让我的工作更轻松(尽管很高兴看到其他人也使用它)。
编辑:Pillow 2.0.0 于 2013 年 3 月 15 日发布。它提供 Python 3 支持和许多错误修复/增强。虽然我们仍在尝试跟踪上游 PIL 的变化,(不幸或幸运取决于你如何看待它)Pillow 已经开始偏离 PIL。
对于 Ubuntu,我发现我需要为我的 python 版本 (2.7) 安装 C 头文件包
sudo apt-get install python2.7-dev
之后,
pip install pil
起作用了。
在 Windows 上,我在 virtualenv 中安装了 PIL,如下所示:
通过执行以下位置的 .exe 在全局 python 站点包中安装 PIL: http://www.pythonware.com/products/pil/
然后,作为“自己动手”,将 C:\Python25\Lib\site-packages 中的 PIL.pth 文件和 PIL 目录复制到 virtualenv site-packages 目录。是的,Python 仍然是一个“亲自动手”的环境......