Wie kann ich eine Conda-Umgebung umbenennen?

281

Ich habe eine Conda-Umgebung mit dem Namen old_name. Wie kann ich den Namen ändern, new_nameohne Referenzen zu brechen?

pkowalczyk
quelle
Siehe auch diesen Beitrag über das Klonen einer Conda-Umgebung
Pylang

Antworten:

454

Das kannst du nicht.

Eine Problemumgehung besteht darin , eine Klonumgebung zu erstellen und dann die ursprüngliche zu entfernen :

(Denken Sie daran, die aktuelle Umgebung unter deactivateWindows und source deactivateMacOS / Linux zu deaktivieren. )

conda create --name new_name --clone old_name
conda remove --name old_name --all # or its alias: `conda env remove --name old_name`

Diese Methode weist mehrere Nachteile auf:

  1. es lädt Pakete neu herunter - Sie können --offlineFlag verwenden, um es zu deaktivieren,
  2. Zeitaufwand für das Kopieren der Umgebungsdateien,
  3. temporäre doppelte Festplattennutzung.

Es gibt ein offenes Problem , bei dem diese Funktion angefordert wird.

pkowalczyk
quelle
88
booooo warum kann man eine conda env nicht umbenennen?
Charlie Parker
6
um etwas Arbeit für diejenigen zu hinterlassen, die Conda teilen und sie dadurch viel besser verstehen lassen: P: D
Saravanabalagi Ramachandran
3
Eine andere Möglichkeit besteht darin, die Umgebung zu klonen und conda create --name new_name --clone old_namedann die alte zu entfernen.
Y0da
4
Ein Wort der Warnung - ich habe dies versucht und bin auf bizarre Fehler gestoßen - meine Funktion hat .bashrcnicht mehr funktioniert, und der Versuch, sie auszuführen pytest, schlug fehl und versuchte, auf die jetzt entfernte Umgebung zu verweisen. Ich habe neue Shells ausprobiert und ohne Glück neu gestartet. Am Ende musste die neue Umgebung weggeblasen werden, und dann einfach mit einer Neuinstallation beginnen. Langsamer, scheint aber jetzt tatsächlich zu funktionieren.
Dwanderson
3
@dwanderson +5000, da ich versuchen wollte, diese Antwort zu verwenden, aber stattdessen werde ich einfach das Pflaster abziehen und meine schlecht benannte Umgebung von Grund auf neu erstellen.
Bgoodr
13

Aufgrund des hilfreichen Kommentars von dwanderson konnte ich dies in einem Bash- Einzeiler tun:

conda create --name envpython2 --file <(conda list -n env1 -e )

Mein schlecht benanntes env war "env1" und das neue, das ich daraus klonen möchte, ist "envpython2".

bgoodr
quelle
1
PackagesNotFoundError: The following packages are not available from current channelsBei diesem Skript ist ein Fehler aufgetreten . Dieses Skript funktioniert wahrscheinlich nur, wenn Sie keine Pakete haben, die mit pip installiert sind und in der vorhandenen Umgebung nicht in conda verfügbar sind.
Yuxuan Chen
-41

Öffnen Sie einfach den Ordner "\ Anaconda \ envs" und benennen Sie ihn um.

Vor dem Umbenennen vor dem Umbenennen

Nach dem Umbenennen nach dem Umbenennen

mengLV LI
quelle
13
Diese Antwort bricht jupyter. Jupyter meldet "Pfad nicht gefunden", wenn versucht wird, den Python-Kernel zu starten.
MD004
5
Es besteht ein großes Risiko, die Umwelt zu
beschädigen
2
mach das nicht.
BenP
Ein Grund, warum dies eine schlechte Idee ist: Es gibt Dateien im Verzeichnis env / name, die den absoluten Pfad zu diesem Verzeichnis enthalten. Wenn Sie das Verzeichnis verschieben, funktioniert der Pfad nicht mehr, da er auf das alte Verzeichnis verweist, das nicht mehr vorhanden ist: envs / ds_tensorflow / Lib / site-packages / sipconfig.py: 'default_bin_dir': 'C: / Users / me / miniconda3 / envs / ds_tensorflow ', envs / ds_tensorflow / Lib / site-packages / sipconfig.py:' default_mod_dir ':' C: / Benutzer / me / miniconda3 / envs / ds_tensorflow \\ Lib \\ site-packages ',
Donald S