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

相关文章推荐

hdu3280 Golden Eggs(网络流最小割)

这题难点在于建图。参考了网上大牛的建图,膜拜下orz 首先这类题,分成两个集合A,B 集合内部的点都是不相交的。 然后对于每一个点,有三种选择,金,银,无。 每一个格拆为两个点,金和银,之间为...

CodeForces 282B Painting Eggs

A - Painting Eggs Time Limit:5000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u ...

hdu3820 Golden Eggs(最小割)

http://acm.hdu.edu.cn/showproblem.php?pid=3820 题意:有一个n*m的格子,我们要往里面放金银蛋,还给了你两种对照表。一种是所有格子放金蛋获得的点数,...

Python Eggs

This is the summary from the network. 1) What is Python egg file ? It’s simply a way of distributing...

eggs(递归)

Description: Erin买了不少鸡蛋,她发现一天吃不完这么多,于是决定把n个同样的鸡蛋放在m个同样的篮子里,允许有的篮子空着不放,请问共有多少种不同的放法呢?注意:2,1,1和1,2,1...

hdoj 3820 Golden Eggs 【最小割+拆点】

题目:hdoj 3820 Golden Eggs 题意:给出一个矩阵,然后当前有三种选择,放一个金蛋,放一个银蛋,或者不放,然后给出每个格子放金蛋或者银蛋的得分,如果金蛋相邻的话每个得分要减...

ZSTUOJ 4214: Power Eggs(经典动态规划——鹰蛋问题)

4214: Power Eggs Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 125  Solved: 21 Description ...
  • Code_KK
  • Code_KK
  • 2015年12月22日 21:23
  • 1091

【动态规划法】解析经典算法题Two eggs problem及其延伸问题

【动态规划法】解析经典算法题Two eggs problem及其延伸问题Two eggs problem可以说是互联网面试中老生常谈的算法题了,经常可以在各大互联网公司的笔试真题中看到它的各类变种(腾...

2015浙江理工校赛 E Power Eggs (DP)

题解一开始没想到DP题,只是想起google面试有这个,上网搜了一下dp[i][j]为i个鸡蛋j个楼层测试的数目,想直接套到这个题目上,后来看了一下数据..楼层有上亿个…怎么开数组,当时就蒙了,还想打...

python-eggs异常解决方法

在使用gevent过程中总是遇到如下python-eggs显示异常的问题:  UserWarning: /home/taoyx/.python-eggs is writable by group/o...
  • tao_627
  • tao_627
  • 2015年07月26日 11:12
  • 1001
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eggs接近发布中…
举报原因:
原因补充:

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