come specificare la nuova posizione dell'ambiente per la creazione di conda


108

la posizione predefinita per i pacchetti è la cartella .conda nella mia directory home. tuttavia, sul server che sto utilizzando, c'è un limite molto stretto di quanto spazio posso usare, il che sostanzialmente mi evita di mettere qualsiasi cosa nella mia directory home. come posso specificare la posizione per l'ambiente virtuale che voglio creare? Grazie! server esegue Ubuntu.


9
C'è qualcosa che non va nella risposta o perché non l'hai accettata? Puoi sempre lasciare commenti se c'è qualcosa che non ti piace.
Pinocchio

3
@linX Assicurati sempre di dare un voto positivo alle risposte che ti piacciono e accetta la risposta che è migliore o che risolve il tuo problema. Questo dà agli autori un premio minore e li incentiva a continuare a dare risposte ben ponderate e utili.
Mike Williamson

Risposte:


121

Utilizzare l' opzione --prefixo -pper specificare dove scrivere i file di ambiente. Per esempio:

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

Creerà l'ambiente denominato in /tmp/test-envcui risiede /tmp/invece di quello predefinito .conda.


6
ma una volta spostata la posizione dell'env, come fa conda a sapere dove si trova quel nuovo env?
Pinocchio

4
c'è una directory per ogni ambiente all'interno di ~ / .conda / envs. Segui la guida di altri e usa --prefix per installare dove vuoi. Quindi crea un collegamento simbolico dall'uno all'altro: ln -s / shared / eng / conds / envs / test-env ~ / .conda / envs / test-env
Robert Lugg

1
perchè non conda create --name hbf_env --prefix /om2/user/username python=3.6 funziona? dice -bash: /home/username/.conda/envs/hbf_env/bin/conda: No such file or directory?
Charlie Parker

7
Charlie, non sono sicuro del motivo per cui hai ricevuto il messaggio di errore relativo al file / directory mancante, ma indipendentemente da ciò, --namenon può essere utilizzato con --prefix. Supponendo che conda sia installato correttamente, il comando corrispondente sarebbe conda create --prefix /om2/user/username/hbf_env python=3.6. Questo creerebbe un env denominato hbf_envin location/om2/user/username/
Thomas Fauskanger

9
@ThomasFauskanger sembra che il comando prefix non crei un nome per l'ambiente, almeno per me .. Dopo conda create --prefix hbf_envnella directory locale, conda info --envsmostra lo spazio vuoto per il nome ma mostra il percorso completo ... l'attivazione dell'ambiente richiede che io digiti il percorso completo (conda non riesce a trovare l'ambiente se digito solo il nome)
Joshua Zastrow

53

come ha detto Paul, usa

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

se ti trovi nella cartella in cui desideri creare il tuo ambiente virtuale, ometti il ​​percorso e usa

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

conda tiene traccia solo degli ambienti inclusi nella cartella envs all'interno della cartella anaconda. La prossima volta che dovrai attivare il tuo nuovo ambiente, spostati nella cartella in cui lo hai creato e attivalo con

source activate yourEnvName

2
Nota che se hai dimenticato il nome dell'ambiente puoi usare il percorso COMPLETO della directory contenente il tuo ambiente
tjb

2
Puoi dire a conda di cercare envs in altre posizioni usando il .condarcfile di configurazione. conda.io/docs/user-guide/configuration/…
Harsh

Questo crea un ambiente senza un nome, solo la directory. C'è un modo per creare un nome all'interno dell'istruzione? Conda non mi permette di specificare entrambi.
Kyouma

15

Mentre l'utilizzo --prefixdell'opzione funziona, devi usarlo esplicitamente ogni volta che crei un ambiente. Se desideri che i tuoi ambienti vengano archiviati altrove per impostazione predefinita, puoi configurarlo nel tuo .condarcfile.

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


5
Se non hai già modificato questa variabile, puoi configurarla eseguendo questo comando:conda config --append envs_dirs /path/to/envs
Arthur Tacca

5
Aggiungi anche env_prompt: ({name})a ~ / .condarc se ottieni il percorso completo nel tuo prompt.
plonker13

12

Se si desidera utilizzare gli argomenti --prefixo -p, ma si desidera evitare di dover utilizzare il percorso completo dell'ambiente per attivarlo, è necessario modificare il .condarcfile di configurazione prima di creare l'ambiente.

Il .condarcfile si trova nella directory home; C:\Users\<user>Su Windows. Modifica i valori sotto la envs_dirschiave per includere il percorso personalizzato per il tuo ambiente. Supponendo che il percorso personalizzato sia D:\envs, il file dovrebbe avere un aspetto simile a questo:

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

Quindi, quando crei un nuovo ambiente su quel percorso, il suo nome apparirà insieme al percorso quando corri conda env list, e dovresti essere in grado di attivarlo usando solo il nome e non il percorso completo.

Screenshot della riga di comando

In sintesi, se modifichi .condarcper includere D:\envse poi esegui conda env create -p D:\envs\myenv python=x.x, allora activate myenv(o source activate myenvsu Linux) dovrebbe funzionare.

Spero che aiuti!

PS Mi sono imbattuto in questo per tentativi ed errori. Penso che quello che accade è quando si modifica la envs_dirschiave, conda si aggiorna ~\.conda\environments.txtper includere gli ambienti trovati in tutte le directory specificate sotto envs_dirs, in modo che sia possibile accedervi senza utilizzare percorsi assoluti.


8

Puoi crearlo in questo modo

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

e non devi spostarti in quella cartella per attivarla.

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

Come vedi lo faccio così.

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
Mentre l'OP ha detto che stavano usando Ubuntu, +1 per aver fornito la soluzione anche su una macchina Windows. :)
Mike Williamson

3

Mi sono imbattuto in una situazione simile. Ho avuto accesso a un'unità dati più grande. A seconda della tua situazione e dell'accesso che hai al server puoi prendere in considerazione

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

Quindi i successivi comandi conda inseriranno i dati nella directory con collegamento simbolico in datavol


1
Questa è la risposta davvero giusta, secondo me: la domanda originale riguardava la posizione dei pacchetti e presenta alcune ambiguità, ma di recente mi sono imbattuto in questo problema e ho indagato un po '. Ci sono due importanti directory sotto $HOME/.conda, envse pkgs. L'uso dello --prefixschema sopra menzionato crea l'ambiente da qualche altra parte, ma tutti i download dei file del pacchetto vanno comunque a $HOME/.conda/pkgs. La soluzione di collegamento simbolico offerta qui corregge sia l'ambiente che le posizioni di download.
Andrew Reid

Questa è una soluzione perfetta!
Jingnan Jia
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.