快速环境求解器
mungo的Python项目详细描述
芒果
重要警告mungo是实验性的,事情很有可能会破裂。
mungo作为conda create
和conda install
的替换-
但是有更快的环境分辨率。
速度的提高是通过使用线性规划来实现的
对中间结果的SAT求解和缓存(有关详细信息,请参阅“ILP”)。
注意,我们不想取代conda,我们只想分享我们的解决方案,以便对其进行测试,也许 总有一天会融入康达。
注意事项
- mungo只公开基本功能:
install (package_spec)+ (--name NAME)? (--channel CHANNEL)* (--file FILE)?
create (package_spec)* (--name NAME)? (--channel CHANNEL)* (--file FILE)?
- mungo的解决方案将{em1}$not与conda的相同。
- mungo无法处理自定义频道URL。不过,任何有
repodata.json.bz2
文件的频道都可以从https://conda.anaconda.org/CHANNEL/ARCH
获得。 - mungo只从
~/.condarc
读取通道(当然,如果提供了,也使用--channel
参数)。 - mungo目前只支持linux。
安装
由于实际的软件包安装是 委托给康达。
来自PIP
pip install mungo
示例
# create an environment named 'foo' with the specified packages
mungo create -n foo "python>=3.7" pulp packaging pyyaml
# create an environment from an environment file (such as mungo.yml)
mungo create --file mungo.yml
# install packages into the current environment
mungo install bwa
# install packages into a different environment
mungo install -n foo bwa
ILP
^ {EM1}$MunG.EEM>使用整数线性程序来确定兼容的包的配置,最大化版本号,同时还保持信道顺序。
合并后,为每个p-节点创建ilp变量∈{0,1}。这些变量与(package, version)
配置相关,并告诉我们是否选择要安装的配置(1)(0)。
在第二步中,从上面定义的约束节点生成以下ILP约束:
对于每个父级p
(变量),所有子级(变量)C
的总和必须大于或等于p
;换句话说:如果选择p
,则还必须至少选择每个依赖包的一个可用版本。如果p
被not选择用于安装(即p = 0
),则其依赖项的安装状态不相关(对于p
)。
更改日志
- 版本0.1.4:显示更新/降级/安装的包。
- 版本0.1.3:将频道优先于版本号。添加'-y/--yes'标志以跳过包安装确认。
- 版本0.1.0:初始版本。