Eggs接近发布中…

 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.5a 4

WSGIRef>=0.1

 

[FastCGI]

FCGIApp>=0.1

 

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

你是如何做到这些的呢?在应用程序最高层脚本中,你可以调用require("PEAK-Web[FastCGI]>= 0.5a 4"),它将找到所有必要的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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值