使用 virtualenv 或 buildout 安装 PIL 的问题
- 2025-03-20 08:47:00
- admin 原创
- 32
问题描述:
当我使用 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 也是一样,它使用 eggs。
如何使用 easy_install 或 buildout 正确安装 PIL?
解决方案 1:
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,请指定具有相同版本 pin 的 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即可完成。:-) 显然等待原始包裹修复是没有回报的。
解决方案 2:
使用Pillow:“友好”的 PIL 分支:-) 它提供:
完全兼容 setuptools
更快的发布周期
没有与 PIL 不同的图像代码更改(即,它旨在跟踪所有 PIL 图像代码更改,并且不会进行任何自己的更改而不向上游报告。)
Windows 二进制文件
如果 PIL 真的像 Pillow 那样做,那么分叉就会终止。在那之前,我们还有 Pillow。
免责声明:我是 fork 的作者,创建 Pillow 主要是为了让我的工作更轻松(尽管很高兴看到其他人也在使用它)。
编辑:Pillow 2.0.0 于 2013 年 3 月 15 日发布。它提供 Python 3 支持和许多错误修复/增强功能。虽然我们仍在尝试跟踪上游 PIL 的变化(不幸或幸运,取决于您如何看待它),但 Pillow 已经开始脱离 PIL。
解决方案 3:
对于 Ubuntu,我发现我需要安装适用于我的 Python 版本 (2.7) 的 C 头文件包
sudo apt-get install python2.7-dev
之后就pip install pil
工作了。
解决方案 4:
在 Windows 上,我在虚拟环境中安装了 PIL,如下所示:
通过执行http://www.pythonware.com/products/pil/中的 .exe 将 PIL 安装在全局 python 站点包中
然后,作为“自己动手”者,将 C:\Python25\Lib\site-packages 中的 PIL.pth 文件和 PIL 目录复制到虚拟环境的 site-packages 目录中。是的,python 仍然是一个“亲自动手”的环境……
扫码咨询,免费领取项目管理大礼包!