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.


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.


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

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


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.


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

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.