计算活动python鸡蛋之间的依赖关系图。
tt.eggdeps的Python项目详细描述
tt.eggdeps
eggdeps工具报告工作集中的鸡蛋之间的依赖关系。 递归地考虑依赖关系,创建有向图。此图 以纯文本或作为 绘图工具。
用法
eggdeps[选项][规格]
规范必须遵循用于指定 由 pkg_resources定义的python包
- 如果给出了任何规范,相应的分布将 在依赖关系图的根上,该图将被限制为 他们的依赖关系。
- 如果没有给出规范,则图表将映射可能的依赖关系 在工作环境中所有的蛋和它的根之间 不依赖于任何其他发行版的发行版。
选项
<表> < COL/> < COL/> <正文> -h , --帮助 显示此帮助消息并退出 -i 忽略 , --ignore= 忽略 要忽略的项目名称 -i 重新忽略 , --重新忽略重新忽略 用于忽略项目名称的正则表达式 -e 死端 , --死端死端 要忽略其依赖关系的项目的名称 -e 重设死端 , --重设死端重设死端 项目名的正则表达式 要忽略的依赖项 -x , --无额外费用 总是忽略额外的依赖关系 <表>-n,–版本号打印活动发行版的版本号
<表> < COL/> < COL/> <正文> -1 , --一次 在纯文本输出中,仅包括每个发行版 一次 -t , --简明扼要 在纯文本输出中,忽略任何未打印的提示 分布,如椭圆 -d , --dot 生成点图 -c , --集群 在点图中,对每个点的直接依赖关系进行聚类 根分布 -r , --要求 生成需求列表 -s , --版本规范 在需求列表中,打印最宽松的版本 规格 <表>选项可以多次出现。
如果同时给出了 -d 和 -r 选项,则最后列出的选项获胜。 打印需求列表时, -v 胜过 -s
脚本入口点识别所有选项的默认值,变量 名称是长选项名称,用下划线替换任何破折号 (除了 --no-extras ,它转换为设置 extras=false )。 这允许使用egg的 参数选项设置默认值 例如,构建配置中的配方。
详细信息
eggdeps的目标是计算一个有节点的有向依赖图 表示工作集的鸡蛋分布,以及 表示鸡蛋之间的强制性或额外依赖性。
工作集
eggdeps的工作集由egg分布定义 可用于正在运行的python解释器。例如,这些可能是 通过简单安装激活的或安装在zc.buildout中的发行版 环境。
如果要按照并非所有要求的规范计算图表 分布在工作集中,缺少的将在 无法确定其依赖关系。如果有的话也一样 在命令行中指定的或任何 其他发行版在工作集中可用,但在一个版本中 与指定的要求不兼容。
图形构建策略
依赖关系图可以按照以下两种策略之一生成:
<表> < COL/> < COL/> <正文> 分析整个工作集: 节点与工作集中的分布完全对应。边缘 对应于任何活动 包含分发,但仅当所需分发处于活动状态时 正确的版本。图的根与 其他有效分布不依赖于分布。 从一个或多个鸡蛋开始: 节点包括由指定分布和 额外的,以及他们深深的依赖。它们可能只覆盖 工作集,以及包含非活动分布的节点 在所需的版本或根本不活动(因此它们的依赖项不能 被跟踪)。图的根对应于指定的 分配。 <表>生成图表时,某些信息将丢失:
- 如果依赖是强制性的并且是通过一个或多个额外的方式发生的,那么 将被记录为简单的强制依赖关系。
- 如果具有已安装附加项的发行版A是多个其他发行版的依赖项 它们似乎都依赖于 附加服务,即使它们单独需要一个或几个。
缩小图形
为了减少一个大而复杂的依赖关系图 节点和边可以省略。
<表> < COL/> < COL/> <正文> 被忽略的节点:节点可以通过精确的名称或正则表达式完全忽略 匹配.如果一个非常基本的分布依赖于 还有很多。例如,setuptools 死端:发行版可以用确切的名称或正则表达式声明死端 匹配.死端包含在图中,但它们自己的依赖项 将被忽略。这使得分布的大型子系统 除了他们的"入口点"外都被抹掉了。举个例子,人们可以 在 zope.* 包的上下文中声明 zope.app.* 死端。 无附加功能:报告和以下附加依赖项可能完全关闭。 在分析工作集时,这可能是最有意义的 而不是特定分布的依赖性。 <表>输出
eggdeps有两种方法可以输出计算出的依赖关系图:plain 文本(定义和一个要输入到Graphviz工具的点文件。
纯文本输出
图形打印为标准输出,基本上每行一个节点, 根据嵌套深度缩进,并在适当的地方注释。这个 每个节点的依赖项按以下条件排序:
- 在附加要求之前打印强制依赖项。
- 每组附加项的依赖项被分组,这些组被排序 按临时演员姓名的字母顺序。
- 依赖项,这些依赖项要么都是必需的,要么是通过同一组 附加服务按名称的字母顺序排列。
作为一个示例,计算了以下依赖关系图 两个zope包,其中一个包需要额外的"测试",具体取决于 卸载了egg,并应用了一些图形缩减:
zope.annotation zope.app.container * zope.component zope.deferredimport zope.proxy zope.deprecation zope.event zope.dublincore zope.annotation ... [test] (zope.app.testing) *<表> < COL/> < COL/> <正文> 方括号[]:
如果节点的一个或多个依赖项仅由额外需求引起, 这些临时演员的名字印在他们的名字上方的方括号里。 依赖项,相对于需要它们的节点半缩进。
省略号…:如果在图中的多个位置出现具有进一步依赖关系的节点, 子图只打印一次,其他事件用 省略。选择子图的打印位置,以便
- 额外的依赖项在路径中出现得越晚越好,如果有的话,
- 最好是浅层嵌套,
- 优先选择字母表开头的路径。
如果分布不在工作集中,则将其名称括起来。
星号*:死角用星号标记。
<表>点文件输出
在点图形中,节点和边不是用文本注释的,而是彩色的。
这些是节点的颜色代码,后面的颜色代码将覆盖 适合多种颜色的情况:
<表> < COL/> < COL/> <正文> 绿色:对应于图根的节点。 黄色:任何根节点的直接依赖关系,无论是强制的还是通过附加的。 浅灰色:死胡同。 红色:蛋的节点安装在与某些要求不兼容的版本上,或 完全没有安装。 <表>边缘颜色:
<表> < COL/> < COL/> <正文> 黑色:强制依赖项。 浅灰色:额外依赖项。 <表>除了通过颜色、根节点及其直接 依赖项可能是群集的。 eggdeps 尝试将每个根节点放在 拥有集群。但是,如果两个或多个根节点共享任何直接依赖项, 它们也将共享一个群集。
需求列表
图中包含的所有发行版都可以作为python输出 表示需求规范列表,可以是
- 列出裸包名称,
- 包括工作集中出现的确切版本,或
- 指定考虑所有版本的复杂版本需求 对有关发行的要求(但不考虑附加条款 完全是暂时的)。复杂的版本需求总是需要 至少是工作集中发生的版本,假设我们不能 了解过去版本的版本需求,但合理地假设 未来版本的要求可能不变。
列表按通讯组名称的字母顺序排列。