将python包折叠为单个模块。
amalgamate的Python项目详细描述
进口
代码合并器的工作方式是其他模块 同一包装(并合并)的货物应从进口货物中进口, 没有 as 子句。例如,假设 z 是 package pkg ,这取决于同一个包中的 x 和 y 。 Z 应该只使用以下类型的导入:
from pkg.x import a, c, d from pkg.y import e, f, g
这些来自导入的模块模拟所有具有 相同的 globals() 。 这是因为合并器将所有这样的模块放在同一个globals()中, 这实际上就是进口商品的作用。例如, xonsh.ast 和 xonsh.execer 都在同一个包中( xonsh )。因此他们应该使用 以上来自导入语法。
或者,对于当前包之外的模块(或 import语句应该是 import pkg.x 或 导入pkg.x作为名称 。这是因为只有在这些情况下 合并器能够以保证的方式自动插入惰性导入 为了安全。假设我们回到 z 并且依赖于 dep , 集合。 以及子包中的模块。以下都是可以接受的:
import dep import collections.abc as abc import pkg.dep.mod0 import pkg.dep.mod1 as mod1
这里最重要的是要对所有这些进口保持一致 包中的模块 包
警告: 对于模块,不应使用pkg.i import j中的 格式 在合并包之外。这是因为模棱两可 来自pkg.x import name 可能会导入一个不能惰性构造的变量 或者可以导入模块。合并者被迫留下这样的进口声明 正如他们所写的,这意味着他们不能自动地懒惰或 被淘汰了。因此,当 .py 是 导入的/
所以要遵循的简单规则是:
- 使用from import直接从同一包中的模块导入对象,
- 通过直接导入从包外部的模块导入对象 或导入为语句。 < > >