solve#
经典的求解器实现。
类#
conda 求解逻辑的高级 API。提供了三种公共方法来访问 |
|
函数#
|
从文件中查找固定的规范,并返回 MatchSpec 元组。 |
|
- class Solver(prefix: str, channels: collections.abc.Iterable[conda.models.channel.Channel], subdirs: collections.abc.Iterable[str] = (), specs_to_add: collections.abc.Iterable[conda.models.match_spec.MatchSpec] = (), specs_to_remove: collections.abc.Iterable[conda.models.match_spec.MatchSpec] = (), repodata_fn: str = REPODATA_FN, command=NULL)#
conda 求解逻辑的高级 API。提供了三种公共方法来访问各种形式的解决方案。
- 参数:
- solve_for_transaction(update_modifier=NULL, deps_modifier=NULL, prune=NULL, ignore_pinned=NULL, force_remove=NULL, force_reinstall=NULL, should_retry_solve=False)#
提供一个 UnlinkLinkTransaction 实例,该实例可用于在环境上执行解决方案。
- 参数:
deps_modifier (DepsModifier) -- 参见
solve_final_state()。prune (bool) -- 参见
solve_final_state()。ignore_pinned (bool) -- 参见
solve_final_state()。force_remove (bool) -- 参见
solve_final_state()。force_reinstall (bool) -- 参见
solve_for_diff()。should_retry_solve (bool) -- 参见
solve_final_state()。
- 返回类型:
- solve_for_diff(update_modifier=NULL, deps_modifier=NULL, prune=NULL, ignore_pinned=NULL, force_remove=NULL, force_reinstall=NULL, should_retry_solve=False) tuple[tuple[conda.models.records.PackageRecord, Ellipsis], tuple[conda.models.records.PackageRecord, Ellipsis]]#
提供要从环境中删除的包引用,然后是要添加到环境中的包引用。
- 参数:
deps_modifier (DepsModifier) -- 参见
solve_final_state()。prune (bool) -- 参见
solve_final_state()。ignore_pinned (bool) -- 参见
solve_final_state()。force_remove (bool) -- 参见
solve_final_state()。force_reinstall (bool) --
- 对于环境中已满足的请求 specs_to_add,
指示求解器从环境中删除包和规范,然后再将其添加回去——可能会修改确切的包实例,具体取决于规范的精确度。
should_retry_solve (bool) -- 参见
solve_final_state()。
- 返回:
PackageRef 序列的二元组。第一个是要从环境中删除的包组,按排序的依赖顺序从叶到根。第二个是要添加到环境中的包组,按排序的依赖顺序从根到叶。
- 返回类型:
- solve_final_state(update_modifier=NULL, deps_modifier=NULL, prune=NULL, ignore_pinned=NULL, force_remove=NULL, should_retry_solve=False)#
给出环境的最终、已求解状态。
- 参数:
update_modifier (UpdateModifier) -- 一个可选标志,指示如何处理关于环境中已存在的包的更新。
deps_modifier (DepsModifier) -- 一个可选标志,指示依赖项的特殊求解器处理。默认的求解器行为是在依赖项更新方面尽可能保守(在依赖项已存在于环境中的情况下),同时仍确保满足所有依赖项。选项包括 * NO_DEPS * ONLY_DEPS * UPDATE_DEPS * UPDATE_DEPS_ONLY_DEPS * FREEZE_INSTALLED
prune (bool) -- 如果
True,则解决方案将不包含先前作为依赖项引入环境但不再作为依赖项需要且不是用户请求的包。ignore_pinned (bool) -- 如果
True,则解决方案将忽略前缀的固定包配置。force_remove (bool) -- 强制删除包,而不删除依赖于它的包。
should_retry_solve (bool) -- 指示是否将重试此求解。这允许我们控制是否在 ssc.r.solve 中调用 find_conflicts(慢)。
- 返回:
按排序的依赖顺序从根到叶,环境的已求解状态的包引用。
- 返回类型:
tuple[PackageRef]
- determine_constricting_specs(spec, solution_precs)#
- get_request_package_in_solution(solution_precs, specs_map)#
- get_constrained_packages(pre_packages, post_packages, index_keys)#
- _collect_all_metadata(ssc)#
- _remove_specs(ssc)#
- _find_inconsistent_packages(ssc)#
- _package_has_updates(ssc, spec, installed_pool)#
- _should_freeze(ssc, target_prec, conflict_specs, explicit_pool, installed_pool)#
- _add_specs(ssc)#
- _run_sat(ssc)#
- _post_sat_handling(ssc)#
- _notify_conda_outdated(link_precs)#
- _prepare(prepared_specs)#
- class SolverStateContainer(prefix, update_modifier, deps_modifier, prune, ignore_pinned, force_remove, should_retry_solve)#
- prefix_data()#
- specs_from_history_map()#
- track_features_specs()#
- pinned_specs()#
- set_repository_metadata(index, r)#
- _init_solution_precs()#
- working_state_reset()#
- get_pinned_specs(prefix)#
从文件中查找固定的规范,并返回 MatchSpec 元组。
- diff_for_unlink_link_precs(prefix, final_precs, specs_to_add=(), force_reinstall=NULL) tuple[tuple[conda.models.records.PackageRecord, Ellipsis], tuple[conda.models.records.PackageRecord, Ellipsis]]#