使用 virtualenv 或 buildout 安装 PIL 的问题

2025-03-20 08:47:00
admin
原创
34
摘要:问题描述:当我使用 easy_install 或 buildout 安装 PIL 时,它会以这样的方式安装,即我必须执行“导入图像”,而不是“从 PIL 导入图像”。但是,如果我执行“apt-get install python-imaging”或使用“pip -E test_pil install PIL”...

问题描述:

当我使用 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 仍然是一个“亲自动手”的环境……

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用