jak określić nową lokalizację środowiska dla tworzenia conda

117

domyślną lokalizacją pakietów jest folder .conda w moim katalogu domowym. jednak na serwerze, którego używam, istnieje bardzo ścisły limit miejsca, którego mogę użyć, co w zasadzie unika umieszczania czegokolwiek w katalogu domowym. jak określić lokalizację środowiska wirtualnego, które chcę utworzyć? Dzięki! serwer działa pod kontrolą Ubuntu.

linX
źródło
10
Czy jest coś nie tak z odpowiedzią lub dlaczego jej nie zaakceptowałeś? Zawsze możesz zostawić komentarz, jeśli coś Ci się nie podoba.
Pinokio,
3
@linX Zawsze pamiętaj, aby zagłosować za odpowiedziami, które Ci się podobają, i zaakceptuj odpowiedź, która jest najlepsza lub która rozwiązuje Twój problem. Daje to autorom niewielką nagrodę i zachęca ich do dalszego udzielania przemyślanych i pomocnych odpowiedzi.
Mike Williamson

Odpowiedzi:

128

Użyj opcji --prefixlub -p, aby określić, gdzie zapisać pliki środowiskowe. Na przykład:

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

Utworzy środowisko o nazwie, /tmp/test-envktóre rezyduje /tmp/zamiast domyślnego .conda.

Paweł
źródło
7
ale po przeniesieniu lokalizacji środowiska env, skąd conda wie, jak znaleźć lokalizację nowego środowiska?
Pinokio
4
w ~ / .conda / envs znajduje się katalog dla każdego środowiska. Postępuj zgodnie ze wskazówkami innych i użyj --prefix, aby zainstalować w dowolnym miejscu. Następnie utwórz łącze symboliczne z jednego do drugiego: ln -s / shared / eng / conds / envs / test-env ~ / .conda / envs / test-env
Robert Lugg
1
dlaczego nie conda create --name hbf_env --prefix /om2/user/username python=3.6 działa? mówi -bash: /home/username/.conda/envs/hbf_env/bin/conda: No such file or directory?
Charlie Parker
7
Charlie, nie jestem pewien, dlaczego pojawił się komunikat o błędzie dotyczący brakującego pliku / katalogu, ale niezależnie od tego, --namenie można go używać z --prefix. Zakładając, że conda jest poprawnie zainstalowana, odpowiednie polecenie byłoby conda create --prefix /om2/user/username/hbf_env python=3.6. Spowodowałoby to utworzenie env o nazwie hbf_envw lokalizacji/om2/user/username/
Thomas Fauskanger
9
@ThomasFauskanger wygląda na to, że polecenie prefiksu nie tworzy nazwy dla środowiska, przynajmniej dla mnie .. Po conda create --prefix hbf_envw katalogu lokalnym conda info --envswyświetla puste miejsce na nazwę, ale pokazuje pełną ścieżkę ... aktywacja środowiska wymaga wpisania pełna ścieżka (conda nie może znaleźć środowiska, jeśli tylko wpiszę nazwę)
Joshua Zastrow
55

jak powiedział Paul, użyj

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

jeśli znajdujesz się w folderze, w którym chcesz utworzyć środowisko wirtualne, po prostu pomiń ścieżkę i użyj

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

conda śledzi tylko środowiska zawarte w folderze envs wewnątrz folderu anaconda. Następnym razem, gdy będziesz musiał aktywować nowy plik env, przejdź do folderu, w którym go utworzyłeś, i aktywuj go za pomocą

source activate yourEnvName
Darth_Tato
źródło
2
Zwróć uwagę, że jeśli zapomniałeś nazwy środowiska, możesz użyć PEŁNEJ ścieżki do katalogu zawierającego twoje środowisko
tjb
2
Możesz powiedzieć Condie, aby szukał kopert w innych lokalizacjach, używając .condarcpliku konfiguracyjnego. conda.io/docs/user-guide/configuration/…
Surowy
Tworzy to środowisko bez nazwy, tylko katalog. Czy istnieje sposób na utworzenie nazwy w oświadczeniu? Conda nie pozwala mi określić obu.
Kyouma,
16

Chociaż użycie tej --prefixopcji działa, musisz jawnie jej używać za każdym razem, gdy tworzysz środowisko. Jeśli chcesz, aby twoje środowiska były domyślnie przechowywane w innym miejscu, możesz je skonfigurować w swoim .condarcpliku.

Zobacz: https://conda.io/docs/user-guide/configuration/use-condarc.html#specify-environment-directories-envs-dirs

Christopher Barber
źródło
7
Jeśli jeszcze nie zmieniłeś tej zmiennej, możesz ją skonfigurować, uruchamiając to jedno polecenie:conda config --append envs_dirs /path/to/envs
Arthur Tacca
7
Dodaj także env_prompt: ({name}) do ~ / .condarc, jeśli otrzymałeś pełną ścieżkę w swoim znaku zachęty.
plonker13
16

Jeśli chcesz użyć argumentów --prefixlub -p, ale chcesz uniknąć konieczności używania pełnej ścieżki środowiska w celu jej aktywacji, musisz edytować .condarcplik konfiguracyjny przed utworzeniem środowiska.

.condarcPlik znajduje się w katalogu domowym; C:\Users\<user>w systemie Windows. Edytuj wartości w envs_dirskluczu, aby uwzględnić niestandardową ścieżkę dla swojego środowiska. Zakładając, że ścieżka niestandardowa to D:\envs, plik powinien wyglądać mniej więcej tak:

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

Następnie, kiedy utworzysz nowe środowisko na tej ścieżce, jego nazwa pojawi się wraz ze ścieżką po uruchomieniu conda env listi powinieneś być w stanie aktywować je przy użyciu tylko nazwy, a nie pełnej ścieżki.

Zrzut ekranu wiersza poleceń

Podsumowując, jeśli edytujesz .condarc aby dołączyć D:\envs, a następnie uruchomisz conda env create -p D:\envs\myenv python=x.x, to activate myenv(lub source activate myenvw systemie Linux) powinno działać.

Mam nadzieję, że to pomoże!

PS Natknąłem się na to metodą prób i błędów. Myślę, że dzieje się tak, gdy edytujesz envs_dirsklucz, aktualizacje Conda, ~\.conda\environments.txtaby uwzględnić środowiska znalezione we wszystkich katalogach określonych w ramach envs_dirs, dzięki czemu można uzyskać do nich dostęp bez używania ścieżek bezwzględnych.

dkearn
źródło
8

Możesz to stworzyć w ten sposób

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

i nie musisz przenosić się do tego folderu, aby go aktywować.

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

Jak widzisz, robię to w ten sposób.

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
źródło
1
Podczas gdy OP powiedział, że używa Ubuntu, +1 za dostarczenie rozwiązania również na komputerze z systemem Windows. :)
Mike Williamson
3

Znalazłem się w podobnej sytuacji. Miałem dostęp do większego dysku z danymi. W zależności od sytuacji i dostępu do serwera możesz rozważyć

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

Następnie kolejne polecenia conda będą umieszczać dane w dir dir z dowiązaniem symbolicznym w datavol

Paweł
źródło
1
Moim zdaniem jest to naprawdę prawidłowa odpowiedź - pierwotne pytanie dotyczyło lokalizacji pakietów i jest niejasne, ale ostatnio natknąłem się na ten problem i trochę zbadałem. Istnieją dwa ważne katalogi poniżej $HOME/.conda, envsi pkgs. Korzystanie z --prefixpowyższego schematu powoduje zbudowanie środowiska w innym miejscu, ale wszystkie pliki do pobrania nadal trafiają do $HOME/.conda/pkgs. Oferowane tutaj rozwiązanie łącza symbolicznego naprawia zarówno środowisko, jak i lokalizacje pobierania.
Andrew Reid
To doskonałe rozwiązanie!
Jingnan Jia