TL;DR: dependency conflicts: Updating one requires (by its requirements) to downgrade another

You are right:

conda update --all

is actually the way to go1. Conda always tries to upgrade the packages to the newest version in the series (say Python 2.x or 3.x).

Dependency conflicts

But it is possible that there are dependency conflicts (which prevent a further upgrade). Conda usually warns very explicitly if they occur.

e.g. X requires Y <5.0, so Y will never be >= 5.0

That's why you 'cannot' upgrade them all.

Resolving

Update 1: since a while, mamba has proven to be an extremely powerful drop-in replacement for conda in terms of dependency resolution and (IMH experience) finds solutions to problems where conda fails. A way to invoke it without installing mamba is via the --solver=libmamba flag (requires conda-libmamba-solver), as pointed out by matteo in the comments.

To add: maybe it could work but a newer version of X working with Y > 5.0 is not available in conda. It is possible to install with pip, since more packages are available in pip. But be aware that pip also installs packages if dependency conflicts exist and that it usually breaks your conda environment in the sense that you cannot reliably install with conda anymore. If you do that, do it as a last resort and after all packages have been installed with conda. It's rather a hack.

A safe way you can try is to add conda-forge as a channel when upgrading (add -c conda-forge as a flag) or any other channel you find that contains your package if you really need this new version. This way conda does also search in this places for available packages.

Considering your update: You can upgrade them each separately, but doing so will not only include an upgrade but also a downgrade of another package as well. Say, to add to the example above:

X > 2.0 requires Y < 5.0, X < 2.0 requires Y > 5.0

So upgrading Y > 5.0 implies downgrading X to < 2.0 and vice versa.

(this is a pedagogical example, of course, but it's the same in reality, usually just with more complicated dependencies and sub-dependencies)

So you still cannot upgrade them all by doing the upgrades separately; the dependencies are just not satisfiable so earlier or later, an upgrade will downgrade an already upgraded package again. Or break the compatibility of the packages (which you usually don't want!), which is only possible by explicitly invoking an ignore-dependencies and force-command. But that is only to hack your way around issues, definitely not the normal-user case!


1 If you actually want to update the packages of your installation, which you usually don't. The command run in the base environment will update the packages in this, but usually you should work with virtual environments (conda create -n myenv and then conda activate myenv). Executing conda update --all inside such an environment will update the packages inside this environment. However, since the base environment is also an environment, the answer applies to both cases in the same way.

Answer from jonas-eschle on Stack Overflow
Top answer
1 of 7
428

TL;DR: dependency conflicts: Updating one requires (by its requirements) to downgrade another

You are right:

conda update --all

is actually the way to go1. Conda always tries to upgrade the packages to the newest version in the series (say Python 2.x or 3.x).

Dependency conflicts

But it is possible that there are dependency conflicts (which prevent a further upgrade). Conda usually warns very explicitly if they occur.

e.g. X requires Y <5.0, so Y will never be >= 5.0

That's why you 'cannot' upgrade them all.

Resolving

Update 1: since a while, mamba has proven to be an extremely powerful drop-in replacement for conda in terms of dependency resolution and (IMH experience) finds solutions to problems where conda fails. A way to invoke it without installing mamba is via the --solver=libmamba flag (requires conda-libmamba-solver), as pointed out by matteo in the comments.

To add: maybe it could work but a newer version of X working with Y > 5.0 is not available in conda. It is possible to install with pip, since more packages are available in pip. But be aware that pip also installs packages if dependency conflicts exist and that it usually breaks your conda environment in the sense that you cannot reliably install with conda anymore. If you do that, do it as a last resort and after all packages have been installed with conda. It's rather a hack.

A safe way you can try is to add conda-forge as a channel when upgrading (add -c conda-forge as a flag) or any other channel you find that contains your package if you really need this new version. This way conda does also search in this places for available packages.

Considering your update: You can upgrade them each separately, but doing so will not only include an upgrade but also a downgrade of another package as well. Say, to add to the example above:

X > 2.0 requires Y < 5.0, X < 2.0 requires Y > 5.0

So upgrading Y > 5.0 implies downgrading X to < 2.0 and vice versa.

(this is a pedagogical example, of course, but it's the same in reality, usually just with more complicated dependencies and sub-dependencies)

So you still cannot upgrade them all by doing the upgrades separately; the dependencies are just not satisfiable so earlier or later, an upgrade will downgrade an already upgraded package again. Or break the compatibility of the packages (which you usually don't want!), which is only possible by explicitly invoking an ignore-dependencies and force-command. But that is only to hack your way around issues, definitely not the normal-user case!


1 If you actually want to update the packages of your installation, which you usually don't. The command run in the base environment will update the packages in this, but usually you should work with virtual environments (conda create -n myenv and then conda activate myenv). Executing conda update --all inside such an environment will update the packages inside this environment. However, since the base environment is also an environment, the answer applies to both cases in the same way.

2 of 7
28

To answer more precisely to the question:

conda (which is conda for miniconda as for Anaconda) updates all but ONLY within a specific version of a package -> major and minor. That's the paradigm.

In the documentation you will find "NOTE: Conda updates to the highest version in its series, so Python 2.7 updates to the highest available in the 2.x series and 3.6 updates to the highest available in the 3.x series." doc

If Wang does not gives a reproducible example, one can only assist. e.g. is it really the virtual environment he wants to update or could Wang get what he/she wants with

conda update -n ENVIRONMENT --all

*PLEASE read the docs before executing "update --all"! This does not lead to an update of all packages by nature. Because conda tries to resolve the relationship of dependencies between all packages in your environment, this can lead to DOWNGRADED packages without warnings.


If you only want to update almost all, you can create a pin file

echo "conda ==4.0.0" >> ~/miniconda3/envs/py35/conda-meta/pinned
echo "numpy 1.7.*" >> ~/miniconda3/envs/py35/conda-meta/pinned

before running the update. conda issues not pinned

If later on you want to ignore the file in your env for an update, you can do:

conda update --all --no-pin

You should not do update --all. If you need it nevertheless you are saver to test this in a cloned environment.

First step should always be to backup your current specification:

conda list -n py35 --explicit 

(but even so there is not always a link to the source available - like for jupyterlab extensions)

Next you can clone and update:

conda create -n py356 --clone py35

conda activate py356
conda config --set pip_interop_enabled True # for conda>=4.6
conda update --all

conda config


update:

Currently I would use mamba (or micromamba) as conda pkg-manager replacement


update:

Because the idea of conda is nice but it is not working out very well for complex environments I personally prefer the combination of nix-shell (or lorri) and poetry [as superior pip/conda .-)] (intro poetry2nix).

Alternatively you can use nix and mach-nix (where you only need you requirements file. It resolves and builds environments best.


On Linux / macOS you could use nix like

nix-env -iA nixpkgs.python37

to enter an environment that has e.g. in this case Python3.7 (for sure you can change the version)

or as a very good Python (advanced) environment you can use mach-nix (with nix) like

mach-nix env ./env -r requirements.txt 

(which even supports conda [but currently in beta])

or via api like

nix-shell -p nixFlakes --run "nix run github:davhau/mach-nix#with.ipython.pandas.seaborn.bokeh.scikit-learn "

Finally if you really need to work with packages that are not compatible due to its dependencies, it is possible with technologies like NixOS/nix-pkgs.

🌐
Reddit
reddit.com › r/learnpython › is updating anaconda not recommended? if so, why?
r/learnpython on Reddit: Is updating anaconda not recommended? If so, why?
August 1, 2021 -

Howdy y’all,

I started learning some python about two years ago but then got away from it due to grad school. Fortunately I’m getting back into it and trying to reorient myself on understanding the basic setup of everything (environments, packages, etc).

I’ve previously installed Anaconda about 2 years ago, so I’m guessing it’s running a version of python that’s a little older. Is it necessary to update either anaconda or somehow the root version of python? (I think anaconda was installed with python 3.7 something).

Or should I let it be and if I ever need a newer python version (say 3.9 or whatever it’s up to now) just create an environment with that?

Are there any downsides to updating anaconda as a whole? And honestly I’m not even sure what that would entail (would it update all package versions in all environments?; not that I have many since I’m a noob haha)

Excited to be back, and always grateful for this supportive community. Hope y’all are well!

🌐
Anaconda
anaconda.com › docs › getting-started › working-with-conda › packages › update-packages
Updating conda packages - Anaconda
The sections below explain how to update individual packages, multiple packages at once, or entire environments. You can also run conda update --help to see a list of all available update command options.
🌐
Anaconda.org
anaconda.org › anaconda › conda
conda - anaconda | Anaconda.org
2 weeks ago - $conda install anaconda::conda · Monthly · Downloads Updates · Version · 26.3.2 · 26.3.1 · 26.3.0 · 26.1.1 · 26.1.0 · 5 / 8 versions selected · Downloads (Last 6 months): 0 · Conda is an open source package management system and environment management system for installing multiple versions of software packages and their dependencies and switching easily between them.
🌐
Quora
quora.com › What-is-the-difference-between-these-two-Anaconda-commands-for-Python-conda-update-all-versus-conda-update-conda
What is the difference between these two Anaconda commands for Python, 'conda update all' versus 'conda update conda'? - Quora
Answer (1 of 2): conda is a utility tool that manages packages. But conda itself is also a package. So, doing [code ]conda update conda[/code] will check if the Anaconda server has an update for the “conda” package and then update that single package and its dependencies, if required, but ...
🌐
Reddit
reddit.com › r/learnpython › conda doesn't update python itself?
r/learnpython on Reddit: conda doesn't update Python itself?
February 13, 2022 -

I've been using Anaconda for a few years for hobby stuff. They only admin I do is 'conda update --all' every few weeks. I assumed that updated everything, but just noticed that I'm on Python 3.6.13. That coincides with when I got this laptop and installed Anaconda, so it's been updating packages but not Python itself.

  1. How do you include Python in the update cycle? Manually by doing 'conda update python' at the same time as 'conda update --all', or can conda do both in a single command?

  2. Is there anything else that conda doesn't update that the average user should know about?

I see that I should do 'conda install python==3.10' but will probably reinstall from scratch to avoid problems/stress.

🌐
Conda
docs.conda.io › projects › conda › en › stable › commands › update.html
conda update — conda 26.3.2 documentation
Update conda packages to the latest compatible version. This command accepts a list of package names and updates them to the latest versions that are compatible with all other packages in the environment.
Find elsewhere
🌐
Conda
docs.conda.io › projects › conda › en › stable › user-guide › tasks › manage-python.html
Managing Python — conda 26.3.2 documentation
This command will update you to the latest major release (e.g. from python=3.10 to python=3.12). If you would like to remain on a minor release, use the conda install command instead:
🌐
GitHub
github.com › conda › conda › issues › 786
"conda update package" does not update to latest version of package · Issue #786 · conda/conda
June 23, 2014 - and do conda update some-package conda won't update some-package to the latest (2.0) version. If I do conda update --all it works fine and updates to version 2.0.
Author   j14r
🌐
Anaconda
anaconda.com › home › blog › keeping anaconda up to date
Anaconda | Keeping Anaconda Up To Date
October 1, 2025 - conda create -n myenv --clone root conda update -n myenv --all
🌐
GitHub
github.com › conda › conda › issues › 5347
Anaconda update doesn't clean automatically older packages · Issue #5347 · conda/conda
May 17, 2017 - From @SMH17 on March 10, 2017 20:11 I usually update packages with conda update --all I have see that in Anaconda3\pkgs there are accumulated all older versions of updated packages that aren't ...
Published   May 17, 2017
Author   nehaljwani
🌐
Super User
superuser.com › questions › 1456970 › conda-update-all-wants-to-remove-all-packages
python - Conda update all wants to remove all packages - Super User
July 7, 2019 - C:\WINDOWS\system32>conda update --all Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: C:\Users\marek\Anaconda3 The following packages will be REMOVED: _anaconda_d...
🌐
Anaconda
anaconda.org
Anaconda.org
Find and install packages from Anaconda.org.
🌐
Anaconda Forum
forum.anaconda.com › product help › anaconda & miniconda
Problem Updating Conda/Anaconda - Anaconda & Miniconda - Anaconda Forum
September 25, 2023 - This is what I found and understand: ... Updates Anaconda distrib itself & package manager. conda update --all # Updates all packages in current active env; doesn't update Anaconda distribution....
🌐
GitHub
github.com › conda › conda › issues › 1414
conda update anaconda vs. conda update --all · Issue #1414 · conda/conda
July 6, 2015 - It seems conda update anaconda and conda install --all are trying to upgrade and downgrade the exact opposite set of packages. What is the reason for this behaviour? If I want to keep all packages "consistent" at the highest possible level, which of the commands is preferable?
Author   sensharma
🌐
Cleancode
cleancode.studio › data-science › conda › conda-update-package
Clean Code Studio - Conda Update Package
The conda update command is used to update a package or packages in your conda environment. To update a package, you can use the following syntax: ... To update all packages in your environment, you can use the conda update --all command.
🌐
Conda
docs.conda.io › projects › conda › en › stable › commands › index.html
Commands — conda 26.3.2 documentation
Scroll to the right to see the entire table. * conda activate only works on conda 4.6 and later versions. For conda versions prior to 4.6, type: ... * conda update python updates to the most recent in the series, so any Python 2.x would update to the latest 2.x and any Python 3.x to the latest 3.x.
🌐
Reddit
reddit.com › r/learnpython › is it possible to upgrade python in anaconda?
r/learnpython on Reddit: Is it possible to upgrade Python in Anaconda?
January 30, 2023 -

I noticed in answering a question that my Python was at 3.7.something, so I thought I'd upgrade. I wanted to experiment with the walrus operator, which began with 3.8. I run Python in Spyder, launched from Anaconda. My package management is done with conda.

So I did this:

conda update anaconda  (worked fine, but I noticed all the python stuff was "py37*")
conda install spyder=5.3.3 (all requested packages already installed)

Launched Python to check: I'm at 3.7.13.

So I tried this:

conda install -c anaconda python=3.10

As with most of my installs, it detected conflicts. I got this message. "Found conflicts! Looking for incompatible packages. This can take several minutes. Press CTRL-C to abort."

At this point it's been running at least 3 days. This happened also when I tried with 3.11 but I interrupted it after a day or two. I'm curious to see what happens so I'm letting it run to completion.

Should I be able to upgrade past 3.7 in Anaconda? What does it mean when a conda install that "can take several minutes" runs for days?

🌐
Medium
plenium.medium.com › conda-update-conda-ran-4-days-and-exited-what-to-do-b041f406add4
conda update conda — ran 4 days and exited what to do. | by Ebeb | Medium
September 15, 2023 - I was trying to update a very old conda version 4.7.12 to the latest and ran the command “conda update conda” as root on the base anaconda…
🌐
Saturn Cloud
saturncloud.io › blog › how-to-update-all-possible-packages-in-anaconda-a-guide
How to Update All Possible Packages in Anaconda: A Guide | Saturn Cloud Blog
January 9, 2024 - This command will check for updates for all packages in the current environment. If updates are available, conda will list them and ask for your confirmation to proceed.