So legen Sie einen neuen Umgebungsspeicherort für die Erstellung von Konda fest

97

Der Standardspeicherort für Pakete ist der Ordner .conda in meinem Home-Verzeichnis. Auf dem Server, den ich verwende, gibt es jedoch eine sehr strenge Beschränkung, wie viel Speicherplatz ich verwenden kann, wodurch ich grundsätzlich nicht in mein Home-Verzeichnis aufgenommen werden kann. Wie kann ich den Speicherort für die virtuelle Umgebung angeben, die ich erstellen möchte? Vielen Dank! Auf dem Server läuft Ubuntu.

linX
quelle
9
Stimmt etwas mit der Antwort nicht oder warum haben Sie sie nicht akzeptiert? Sie können jederzeit Kommentare hinterlassen, wenn Ihnen etwas nicht gefällt.
Pinocchio
3
@linX Stellen Sie immer sicher, dass Sie die gewünschten Antworten positiv bewerten und die Antwort akzeptieren, die am besten ist oder Ihr Problem löst. Dies gibt den Autoren eine geringfügige Auszeichnung und motiviert sie, weiterhin gut durchdachte und hilfreiche Antworten zu geben.
Mike Williamson

Antworten:

113

Verwenden Sie die Option --prefixoder, -pum anzugeben, wo die Umgebungsdateien geschrieben werden sollen. Beispielsweise:

conda create --prefix /tmp/test-env python=2.7

Erstellt die benannte Umgebung /tmp/test-env, in der sich /tmp/anstelle der Standardeinstellung befindet .conda.

Paul
quelle
6
Aber woher weiß Conda, wenn Sie den Standort der Umgebung verschoben haben, wo sich diese neue Umgebung befindet?
Pinocchio
3
In ~ / .conda / envs gibt es für jede Umgebung ein Verzeichnis. Befolgen Sie die Anweisungen anderer und verwenden Sie --prefix, um zu installieren, wo immer Sie möchten. Erstellen Sie dann einen Symlink von einem zum anderen: ln -s / shared / eng / conds / envs / test-env ~ / .conda / envs / test-env
Robert Lugg
1
warum nicht conda create --name hbf_env --prefix /om2/user/username python=3.6 funktioniert? sagt -bash: /home/username/.conda/envs/hbf_env/bin/conda: No such file or directory?
Charlie Parker
7
Charlie, ich bin mir nicht sicher, warum Sie die Fehlermeldung über fehlende Datei / Verzeichnis erhalten haben, aber unabhängig davon --namekann nicht mit verwendet werden --prefix. Vorausgesetzt, conda ist korrekt installiert, wäre der entsprechende Befehl conda create --prefix /om2/user/username/hbf_env python=3.6. Dies würde eine env Namen erstellen hbf_envin Lage/om2/user/username/
Thomas Fauskanger
9
@ThomasFauskanger Es sieht so aus, als würde der Präfix-Befehl keinen Namen für die Umgebung erstellen, zumindest für mich. Nachdem conda create --prefix hbf_envim lokalen Verzeichnis der conda info --envsName leer angezeigt wird , aber der vollständige Pfad angezeigt wird ... Um die Umgebung zu aktivieren, muss ich etwas eingeben der vollständige Pfad (Conda kann die Umgebung nicht finden, wenn ich nur den Namen eingebe)
Joshua Zastrow
50

wie Paul sagte, benutze

conda create --prefix=/users/.../yourEnvName python=x.x

Wenn Sie sich in dem Ordner befinden, in dem Sie Ihre virtuelle Umgebung erstellen möchten, lassen Sie einfach den Pfad weg und verwenden Sie ihn

conda create --prefix=yourEnvName python=x.x

conda verfolgt nur die Umgebungen, die im Ordner envs im anaconda-Ordner enthalten sind. Wenn Sie das nächste Mal Ihre neue Umgebung aktivieren müssen, wechseln Sie in den Ordner, in dem Sie sie erstellt haben, und aktivieren Sie sie mit

source activate yourEnvName
Darth_Tato
quelle
2
Beachten Sie, dass Sie, wenn Sie den Umgebungsnamen vergessen haben, den
vollständigen
2
Mithilfe der .condarcKonfigurationsdatei können Sie conda anweisen, an anderen Orten nach Envs zu suchen . conda.io/docs/user-guide/configuration/...
Harsh
Dadurch wird eine Umgebung ohne Namen erstellt, nur das Verzeichnis. Gibt es eine Möglichkeit, einen Namen innerhalb der Anweisung zu erstellen? Conda lässt mich nicht beide angeben.
Kyouma
12

Während die Verwendung der --prefixOption funktioniert, müssen Sie sie jedes Mal, wenn Sie eine Umgebung erstellen, explizit verwenden. Wenn Sie Ihre Umgebungen standardmäßig nur an einem anderen Ort speichern möchten, können Sie sie in Ihrer .condarcDatei konfigurieren .

Weitere Informationen finden Sie unter: https://conda.io/docs/user-guide/configuration/use-condarc.html#specify-environment-directories-envs-dirs

Christopher Barber
quelle
4
Wenn Sie diese Variable noch nicht geändert haben, können Sie sie konfigurieren, indem Sie diesen einen Befehl conda config --append envs_dirs /path/to/envs
ausführen
3
Fügen Sie auch env_prompt: ({name})zu ~ / .condarc wenn Sie vollständigen Pfad in Ihrem Prompt erhalten.
Plonker13
12

Wenn Sie die Argumente --prefixoder verwenden -pmöchten, aber nicht den vollständigen Pfad der Umgebung verwenden müssen, um sie zu aktivieren, müssen Sie die .condarcKonfigurationsdatei bearbeiten, bevor Sie die Umgebung erstellen.

Die .condarcDatei befindet sich im Ausgangsverzeichnis. C:\Users\<user>unter Windows. Bearbeiten Sie die Werte unter dem envs_dirsSchlüssel, um den benutzerdefinierten Pfad für Ihre Umgebung einzuschließen. Angenommen, der benutzerdefinierte Pfad lautet D:\envs, sollte die Datei ungefähr so ​​aussehen:

ssl_verify: true
channels:
  - defaults
envs_dirs:
  - C:\Users\<user>\Anaconda3\envs
  - D:\envs

Wenn Sie dann eine neue Umgebung für diesen Pfad erstellen, wird der Name zusammen mit dem Pfad angezeigt, wenn Sie ausgeführt conda env listwerden. Sie sollten ihn nur mit dem Namen und nicht mit dem vollständigen Pfad aktivieren können.

Befehlszeilen-Screenshot

Wenn Sie bearbeiten Zusammengefasst .condarcenthalten D:\envs, und dann laufen conda env create -p D:\envs\myenv python=x.x, dann activate myenv(oder source activate myenvauf Linux) arbeiten soll.

Hoffentlich hilft das!

PS Ich bin durch Versuch und Irrtum darauf gestoßen. Ich denke, was passiert, ist, wenn Sie den envs_dirsSchlüssel bearbeiten , Konda-Updates ~\.conda\environments.txt, um die Umgebungen einzuschließen , die in allen unter dem angegebenen Verzeichnissen gefunden werden envs_dirs, so dass auf sie zugegriffen werden kann, ohne absolute Pfade zu verwenden.

dkearn
quelle
6

Sie können es so erstellen

conda create --prefix C:/tensorflow2 python=3.7

und Sie müssen nicht in diesen Ordner wechseln, um ihn zu aktivieren.

# To activate this environment, use:
# > activate C:\tensorflow2

Wie Sie sehen, mache ich das so.

D:\Development_Avector\PycharmProjects\TensorFlow>activate C:\tensorflow2

(C:\tensorflow2) D:\Development_Avector\PycharmProjects\TensorFlow>

(C:\tensorflow2) D:\Development_Avector\PycharmProjects\TensorFlow>conda --version
conda 4.5.13
Mohan Radhakrishnan
quelle
1
Während das OP angab, Ubuntu zu verwenden, +1, um die Lösung auch auf einem Windows-Computer bereitzustellen. :)
Mike Williamson
1

Ich bin in eine ähnliche Situation geraten. Ich hatte Zugriff auf ein größeres Datenlaufwerk. Abhängig von Ihrer Situation und dem Zugriff auf den Server können Sie dies in Betracht ziehen

ln -s /datavol/path/to/your/.conda /home/user/.conda

Anschließend fügen nachfolgende conda-Befehle Daten in das symlinked dir in datavol ein

Paul
quelle