CondaValueError: Value error: prefix already exist

2020-06-12 03:49发布

问题:

Reference:

https://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/20/conda/

I've run the following commands to install conda and create a virtual environment. Continue reading after code block for my question.

C:\Windows\System32>conda -V
conda 4.1.11

C:\Windows\System32>conda update conda
Fetching package metadata .........
Solving package specifications: ..........

Package plan for installation in environment C:\Program Files\Miniconda2:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    conda-env-2.6.0            |                0          498 B
    enum34-1.1.6               |           py27_0          53 KB
    conda-4.2.9                |           py27_0         421 KB
    ------------------------------------------------------------
                                           Total:         475 KB

The following NEW packages will be INSTALLED:

    enum34:    1.1.6-py27_0

The following packages will be UPDATED:

    conda:     4.1.11-py27_0 --> 4.2.9-py27_0
    conda-env: 2.5.2-py27_0  --> 2.6.0-0

Proceed ([y]/n)? y

Fetching packages ...
conda-env-2.6. 100% |###############################| Time: 0:00:00  99.60 kB/s
enum34-1.1.6-p 100% |###############################| Time: 0:00:00 719.03 kB/s
conda-4.2.9-py 100% |###############################| Time: 0:00:00   1.33 MB/s
Extracting packages ...
[      COMPLETE      ]|##################################################| 100%
Unlinking packages ...
[      COMPLETE      ]|##################################################| 100%
Linking packages ...
[      COMPLETE      ]|##################################################| 100%

C:\Windows\System32>


C:\Windows\System32>Python -V
Python 2.7.12

C:\Windows\System32>conda create -n ENV1 python=2.7.12 anaconda

...

<-- chose 'n' for install

I chose 'n' here, because this is when I crashed my Linux server because I ran out of disk space when a billion programs (give or take) were asked to be installed. Instead, I chose 'n', and then wanted to log this to a file so I could see the entire list because I couldn't scroll up in the Windows command prompt, so I ran the code below instead. It sat for a while, and then I broke out using CTRL+C. Continue reading after code block for my question.

C:\Windows\System32>conda create -n ENV1 python=2.7.12 anaconda > C:\output.txt

y
Traceback (most recent call last):
  File "C:\Program Files\Miniconda2\Scripts\conda-script.py", line 5, in <module
>
    sys.exit(conda.cli.main())
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\cli\main.py", line 1
50, in main
    return conda_exception_handler(_main)
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\exceptions.py", line
 473, in conda_exception_handler
    return_value = func(*args, **kwargs)
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\cli\main.py", line 1
44, in _main
    exit_code = args.func(args, p)
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\cli\main_create.py",
 line 68, in execute
    install(args, parser, 'create')
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\cli\install.py", lin
e 405, in install
    execute_actions(actions, index, verbose=not context.quiet)
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\plan.py", line 643,
in execute_actions
    inst.execute_instructions(plan, index, verbose)
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\instructions.py", li
ne 134, in execute_instructions
    cmd(state, arg)
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\instructions.py", li
ne 47, in FETCH_CMD
    fetch_pkg(state['index'][arg + '.tar.bz2'])
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\fetch.py", line 336,
 in fetch_pkg
    download(url, path, session=session, md5=info['md5'], urlstxt=True)
  File "C:\Program Files\Miniconda2\lib\site-packages\conda\fetch.py", line 419,
 in download
    for chunk in resp.iter_content(2**14):
  File "C:\Program Files\Miniconda2\lib\site-packages\requests\models.py", line
664, in generate
    for chunk in self.raw.stream(chunk_size, decode_content=True):
  File "C:\Program Files\Miniconda2\lib\site-packages\requests\packages\urllib3\
response.py", line 353, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "C:\Program Files\Miniconda2\lib\site-packages\requests\packages\urllib3\
response.py", line 310, in read
    data = self._fp.read(amt)
  File "C:\Program Files\Miniconda2\lib\httplib.py", line 612, in read
    s = self.fp.read(amt)
  File "C:\Program Files\Miniconda2\lib\socket.py", line 384, in read
    data = self._sock.recv(left)
  File "C:\Program Files\Miniconda2\lib\ssl.py", line 756, in recv
    return self.read(buflen)
  File "C:\Program Files\Miniconda2\lib\ssl.py", line 643, in read
    v = self._sslobj.read(len)
KeyboardInterrupt

C:\Windows\System32>conda create -n ENV1 python=2.7.12 anaconda > C:\output.txt

CondaValueError: Value error: prefix already exists: C:\Program Files\Miniconda2
\envs\ENV1

How can I remove the ENV1 prefix so I can try re-installing? And how can I log all of this output in Windows. The input is not visible if I move to C:\output.txt.

回答1:

I simply deleted folder C:\Program Files\Miniconda2\envs\ENV1\.



回答2:

You can overwrite the existing enviroment by adding the --force option.

So:

conda create -n ENV1 python=2.7.12 anaconda --force

Make sure that you have updated you anaconda because it is a recent function.



回答3:

When the conda environment was previously removed, but the actual directory still exists (for some reason), then the "conda env remove -n ENV1" will do nothing:

$ conda-env list

  # conda environments:
  #
  base                  *  /home/nmanos/miniconda
  test-env                 /home/nmanos/miniconda/envs/test-env

$ conda-env remove -n ENV1
# Nothing was removed (exit code zero)   

$ ls /home/nmanos/miniconda/envs/ENV1  
  bin  conda-meta  etc  go
# Directory still exists

So you can remove the actual ENV1 directory, as follow:

$ ENV_BASE=$(conda-env list | awk '/base/ { print $NF }')
$ echo $ENV_BASE
  /home/nmanos/miniconda

$ rm -rf "$ENV_BASE/envs/ENV1"


回答4:

The next time you open the terminal and the prompt is (base) C:\Users\whatever> Just type: (base) C:\Users\whatever> conda activate ENV1

Your prompt should change to: (ENV1) C:\Users\whatever>

And once your work is done just say: (ENV1) C:\Users\whatever> conda deactivate

Because it's obviously inconvenient to keep deleting the folder over and over