Eggs接近发布中…

翻译 2007年10月04日 22:41:00
 Sunday, May 22, 2005

Eggs get closer to hatching...

 

我总算挤出一些时间来继续Python Eggs方面的工作,实际上自从我和Bob IppolitoPycon开始做的时候这方面工作就没有什么进展。其成果是这周末我完成了核心部分的依赖性分解引擎(dependency resolution engine),这是egg运行时的一部分,允许eggs指定其依赖哪些别的eggs(包括所需的版本和所请求的可选特性)以及应用程序关于搜索eggs并根据其依赖关系自动添加到sys.path中的要求。另外还提供钩子机制以支持对依赖关系的自动下载,虽然目前基本系统还做不到这一点。(自动下载仍有很多安全策略问题,所以不建议在默认状态下启用该功能。不管怎样,GUI应用程序将打算把下载进度显示整合到其UI(用户界面)中)

仍旧没有解决的两个问题是:1)通过扫描sys.path目录找到.egg文件和.egg-info目录;2)支持“名字空间包(namespace packages)”,使得像ZopePeakTwisted这类重量级框架能够分割成独立的.egg文件。除此之外,还有许多改进和收尾工作要做。例如,只有有了.egg文件内容与listdir()等价的API时,peak.web才可支持web组件上的.egg-friendly。你可以在wiki页面中的Implementation Status section找到所有这些开放性问题。

不管怎么说这仍是一个令人兴奋的里程碑。因为egg系统不仅能够解决循环依赖性、报告版本冲突和所有细节问题,它还能处理“可选”的依赖关系问题。一个可选项是已知包用户可能使用或不使用的包的特性之一,且还能生成其他依赖关系。例如,我为peak.web创建一个名为“PEAK-Web”的.egg文件,PEAK-Web将依赖PEAK-CoreWSGIRef库,还可选支持FastCGI,但要想实现该支持还需要FCGIApp库。

在一个更单一的依赖管理系统中,PEAK-Web将完成以下事情中的一个来支持这种可选依赖关系。

 

1.依赖FCGIApp(在不需要时也强制你安装它)

2.不依赖FCGIApp(在需要时强制你解决)

3.创建一个PEAK-Web-FastCGI包,目的是建立PEAK-WebFCGIApp的依赖。你需要通过这种依赖来取代对PEAK-Web的依赖。

 

这些都太难看了,所以我们针对Python Eggs提出了一个更好的解决方法。PEAK-Web将定义一个名为“FastCGI”的可选项,它会有一个“EGG-INFO/depends.txt”文件,内容为:

 

PEAK-Core==0.5a4

WSGIRef>=0.1

 

[FastCGI]

FCGIApp>=0.1

 

以上内容告诉egg运行时PEAK-Web总是依赖PEAK-CoreWSGIRef,但当需要FastCGI选项时它只需要FCGIApp

你是如何做到这些的呢?在应用程序最高层脚本中,你可以调用require("PEAK-Web[FastCGI]>=0.5a4"),它将找到所有必要的eggs并添加到sys.path中,若没有找到满足条件的eggs或两个eggs有版本冲突问题(或是,若已在sys.path上的一个egg和要求版本不兼容或和要求依赖关系的必要条件不兼容时),则产生一个DistributionNotFound (or VersionConflict)错误。尽管这并没有为你省去了解一个包的可选特性的麻烦,它至少让你无需使用虚包(dummy packages,仅满足规定条件而被输入的或被提供的译者注)来捆绑可选依赖关系。

总之,你仍然还是不能使用这些特性,因为我还未对这一扫描指定目录以找到要用的.egg文件的部分进行实现。哎,但愿下周末我能完成这些。在这段时间里,你要是喜欢尝鲜,就可以从Python CVS的沙盒中找到最新的setuptools下载下来玩玩。Ian Bicking和我也向wiki页中Building Eggs部分增加了一些更新过的文档,它将使你能更容易地理解如何将自己或他人的库打包成.egg文件。

 

5.23更新:今晚我用了一点时间完成了一个可以部分工作的分类扫描器,所以require()API看来没什么问题了。如果有人对此感兴趣想做一下实验,我期待接到有关实验过程和经历的消息。

 

(原文链接网址:http://dirtsimple.org/2005/05/eggs-get-closer-to-hatching.html

python-eggs异常解决方法

在使用gevent过程中总是遇到如下python-eggs显示异常的问题:  UserWarning: /home/taoyx/.python-eggs is writable by group/o...
  • tao_627
  • tao_627
  • 2015年07月26日 11:12
  • 1213

未经处理的异常在 System.Data.dll 中发生。其他信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。

【画龙点睛】 在where后面,如果仅仅是一个Boolean类型的值或者Boolean类型的变量,那么where和这个Boolean值之间是不可以有空格的(这时,我的代码中的@strCo...
  • huyuyang6688
  • huyuyang6688
  • 2014年07月31日 20:54
  • 4166

Linux(CentOS 5.8)下部署Django-1.5.5遇到的一些问题

安装Python(Python-2.7.5) shell>tar xzvf Python-2.7.5.tgz shell>cd Python-2.7.5 shell>./configure s...
  • zyz511919766
  • zyz511919766
  • 2013年11月25日 16:34
  • 5895

教你彻底理解动态规划——扔鸡蛋问题 Drop Eggs2

有一个n层的建筑。如果一个鸡蛋从第k层及以上落下,它会碎掉。如果从低于这一层的任意层落下,都不会碎。 有m个鸡蛋,用最坏的情况下实验次数最少的方法去找到k, 返回最坏情况下所需的实验次数。 样...
  • weixin_40564421
  • weixin_40564421
  • 2018年01月06日 13:05
  • 32

2-eggs-100-floors-puzzle(扔两个鸡蛋问题)

本文浅谈了俩个鸡蛋问题
  • zjq2008wd
  • zjq2008wd
  • 2014年04月13日 17:27
  • 1083

【ZSTU4214 2015年12月浙理工校赛 E】【看似区间DP实则线性相加 脑洞 好题】Power Eggs 最少扔鸡蛋次数测出其坚固度 学会状态表示

4214: Power Eggs Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 130  Solved: 24 Description ...
  • snowy_smile
  • snowy_smile
  • 2015年12月23日 12:17
  • 588

HDU 3820 Golden Eggs( 最小割 奇特建图)经典

Golden Eggs Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To...
  • u010372095
  • u010372095
  • 2015年08月14日 13:44
  • 721

Eggs简介

原文:http://peak.telecommunity.com/DevCenter/PythonEggs 捡其重点翻译之。
  • nirendao
  • nirendao
  • 2017年04月24日 23:57
  • 287

hdu 3820 Golden Eggs(最小割,最大点权独立集+拆点)

Golden Eggs Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To...
  • WEYuLi
  • WEYuLi
  • 2013年12月21日 20:13
  • 526

hdu 3820 Golden Eggs 最小割

题意:有n*m的方格,每个方格可以放金色鸡蛋或者银色鸡蛋,只能放一个
  • CHCXCHC
  • CHCXCHC
  • 2014年11月19日 16:14
  • 479
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eggs接近发布中…
举报原因:
原因补充:

(最多只允许输入30个字)