54

I have Win 10

When running:

conda update conda

I encountered this error:

RemoveError: 'setuptools' is a dependency of conda and cannot be removed from
conda's operating environment.

Nothing seems to help

I tried to uninstall anaconda and got a successful message but it seems there are some traces of older version that still persist

How can I completely erase all traces of Anaconda installation?

Toly
  • 2,981
  • 8
  • 25
  • 35
  • Is that the entire error output? Where did you run that, in what context? – AMC Aug 18 '20 at 23:29
  • There's a similar post in superuser: https://superuser.com/questions/1402260/error-when-updating-conda-packages-removeerror-setuptools-is-a-dependency-of and a related issue on GitHub: https://github.com/conda/conda/issues/8149 – Mark Mikofski Aug 25 '22 at 21:57

7 Answers7

100

While I still did not find how to cleanly uninstall anaconda, I was able to resolve the error by using the following:

conda update --force conda
conda update anaconda

and again

conda update conda

As a result, I got a stable environment with no dependency conflicts. Seems like something within latest conda is too restrictive and update must be forced.

Asclepius
  • 57,944
  • 17
  • 167
  • 143
Toly
  • 2,981
  • 8
  • 25
  • 35
8

I am on a Mac rather than Windows but I was getting the same message. I was able to update by running conda update setuptools. It brought conda up-to-date in the process.

jvaugha
  • 131
  • 2
  • 7
5

I'm on Linux Ubuntu 16.04, and it works for me by:

conda uninstall setuptools
# This is a must to make it work
conda install setuptools
conda update --force conda
Val
  • 21,938
  • 10
  • 68
  • 86
3

I am not 100% sure this is the correct way but it seems I managed to solve it by doing:

conda update --force -n base -c defaults conda

then again the same command without --force:

conda update -n base -c defaults conda
Redoman
  • 3,059
  • 3
  • 34
  • 62
2

I was having trouble installing scrapy with anaconda using ' conda install -c conda-forge scrapy'

I kept getting the

'Verifying transaction: failed' ' RemoveError: 'setuptools' is a dependency of conda and cannot be removed from conda's operating environment.'

error so I tried the mentioned above force install of setup "conda update --force conda" and once that was successful I was able to reapply the scrapy install successfully.

1

I ran into this issue in a Dockerfile using continuumio/miniconda3:latest in which I had the line:

RUN conda update -n base -c defaults conda

To fix it, I simply appended the setuptools requirement:

RUN conda update -n base -c defaults conda setuptools

There was no need for any other heroics.

Asclepius
  • 57,944
  • 17
  • 167
  • 143
  • I am dealing apparently with similar circumstances, you would add this line just before activate the env, right? – ReinholdN May 13 '20 at 19:41
  • '''FROM continuumio/miniconda:latest WORKDIR /home/reinhold/Documents/webapps/house_market_app/ihm_condaenv COPY environment.yml ./ COPY app.py ./ COPY boot.sh ./ RUN chmod +x boot.sh RUN conda update -n base -c defaults RUN conda env create -f environment.yml RUN echo "source activate ihm_condaenv" > ~/.bashrc ENV PATH /home/reinhold/anaconda3/envs/ihm_condaenv/bin:$PATH EXPOSE 8080 CMD ["./boot.sh"]''' – ReinholdN May 13 '20 at 19:50
  • @ReinholdN Yes. [This](https://stackoverflow.com/a/57595180/) is how I activate the environment prior to defining an `ENTRYPOINT` which runs `python`. – Asclepius May 13 '20 at 23:21
0

Solution

The following should, in most cases fix such problems.

conda update conda -n base
conda update --all

conda version: 4.13 (check with: conda --version)

Disclaimer: I maintain over 60 conda-forge packages. This snippet has mostly gotten me out of the error so far.

A recommended fail-safe

As a fail safe, please always prefer creating conda environments from environment-specification files: environment.yml.

# update a global environment from a file
conda env update -f ./environment.yml  --prune

If you don't already have an environment definition/scpecification file, you can create one as follows. (source)

## Export a platform independent copy of an environment
#  - This will only include packages you installed explicitly.
conda env export --from-history > path/to/environment.yml

Tips

The conda solver may be slow and you don't have to endure such pain of helplessly waiting when the environment solver finishes and installs the packages.

An easier alternative is to use mamba as a drop-in replacement of conda. Here's how:

conda install -n base mamba -c conda-forge
mamba install -n some_env -c some_channel package1 "package2>=2.1.0"

To update with mamba:

# Global env + Use file
mamba env update -f ./environment.yml  --prune
CypherX
  • 7,019
  • 3
  • 25
  • 37