Known limitations and differences#
conda-rattler-solver aims to be a drop-in replacement for the classic and
libmamba solvers, but it is still in beta and there are some areas where it
behaves differently. This page lists these known limitations and differences.
Tip
You can always use --solver=classic or --solver=libmamba to run a single
operation with another solver, even after setting rattler as the default.
Features and track_features#
The legacy features metadata, as used by old mkl and nomkl variant
packages, is not supported. This limitation is shared with libmamba. If you
depend on packages that select variants through features, use the classic
solver for those environments.
Channel priority#
With channel_priority: disabled, classic prefers the higher-priority
channel when the same version is available from several channels.
conda-rattler-solver may pick a build from a lower-priority channel instead.
See
conda/rattler#2823. The
default, flexible, and strict are not affected.
With channel_priority: strict, if an installed package came from a channel
that is no longer in your configuration and one of your active channels also
provides it, conda-rattler-solver replaces it with the active channel’s build,
even when that means a downgrade. classic keeps the installed package. If
you need to keep it, add the original channel back or pin the package.
Error messages#
For unsatisfiable dependency conflicts, conda-rattler-solver reports
RattlerUnsatisfiableError. Its diagnostic walks through the packages
that were tried and explains which requirements could not be satisfied.
A request for an unavailable package can raise PackagesNotFoundError.
A direct conflict between requested specs and configured pins can raise
SpecsConfigurationConflictError. See
pinned_packages for pinning behavior.
Solutions that differ from classic#
These are not bugs, but they can be surprising if you are used to the
classic solver:
When an existing environment is re-solved with relaxed constraints, conda-rattler-solver may keep installed packages that
classicwould remove, as long as they are still compatible with the solution.conda-rattler-solver tries to minimise changes to your environment, but it does not implement
classic’s multi-step retry logic with--freeze-installed. If a solve fails, it retries with progressively looser constraints on the conflicting packages. During an update this can downgrade a conflicting package if that is the only way to find a solution, which is whatlibmambadoes too.
Reporting a new difference#
If you find a case where conda-rattler-solver and classic or libmamba
disagree and it is not listed here, please
open an issue
with the command you ran, your channel configuration, and the output of
conda info.