2016-03-01 21 views
5

wiem, że mogę usunąć pojedynczy środowiska zConda usunąć wszystkie środowiska (z wyjątkiem root)

conda remove -n envname --all 

ale często utworzyć wiele nowych środowisk instalowania pakietu specifiy lub testowania to więc będę regularnie skończyć z 5-10 środowisk i trudno jest je usunąć po sobie. Czy istnieje prosty sposób (w przypadku systemu Windows) na usunięcie wszystkich środowisk poza głównym środowiskiem?

+0

Może możesz wypróbować coś takiego jak 'conda info --envs' i pobrać listę środowisk i utworzyć pętlę z tej listy, np.' Conda remove --name envname --all'. Oczywiście należy unikać środowiska root. – Ringil

+0

@Ringil - Jeśli nie ma "opcji wygody" dla tego, czego szukam, masz pojęcie, jak zrobić tę opcję przechwytywania i umieszczania w oknach? – MSeifert

Odpowiedz

5

Usuwanie wszystkich katalogów wewnątrz envs podkatalogu, który znajduje się wewnątrz conda spełnia swoje zadanie.

1

Zgodnie z moim komentarzem, można uzyskać wszystkie środowiska za pomocą jednego polecenia conda, a następnie spróbuj wykonać pętlę i usunąć je pojedynczo. Oto jeden sposób, w jaki możesz zrobić coś takiego. Zauważ, że powinieneś zastąpić anaconda_command_prompt_string odpowiednim ciągiem, który wywołuje twój Anaconda Command Prompt. Również kod ten jest prawdopodobnie dość kruche:

from subprocess import PIPE, Popen 

anaconda_command_prompt_string = 'C:\\Windows\\system32\\cmd.exe "/K" C:\\Users\\your_user_name\\AppData\\Local\\Continuum\\Anaconda3\\Scripts\\activate.bat C:\\Users\\your_user_name\\AppData\\Local\\Continuum\\Anaconda3' 
p = Popen(anaconda_command_prompt_string, stdin=PIPE, stdout=PIPE, bufsize=1) 
p.stdout.readline(), # read the first line 

print >>p.stdin, 'conda env list' # write input 
p.stdin.flush() 
p.stdout.readline() 

p.stdout.readline() 

p.stdout.readline() 

p.stdout.readline() 
envs = [] 


line = 'Anaconda' 
while 'Anaconda' in line: 
    line = p.stdout.readline() 
    name = line.replace(' ', '').split('C:')[0] 
    if 'root' not in name and '\n' not in name: 
     envs.append(name) 

for name in envs: 
    command_string = 'conda remove -n {0} --all --yes'.format(name) 
    print >>p.stdin, command_string 
    p.stdin.flush() 
    line = p.stdout.readline() 
    while 'Complete' not in line: 
     print line 
     line = p.stdout.readline() 
    print line 
1

Niezbyt elegancka odpowiedź. Ale po prostu skopiowałbym nazwy wszystkich środowisk z conda info --envs. Następnie zrób bash (lub .bat dla Windows) Plik ze wszystkich komend potrzebnych np ...

conda remove -n env_name_1 --all -y conda remove -n env_name_2 --all -y conda remove -n env_name_3 --all -y conda remove -n env_name_4 --all -y conda remove -n env_name_5 --all -y

Albo po prostu skopiuj i wklej to do terminalu i będzie sortować cię!

Gdybym był małym kreatorem bash (lub .bat) (lub mógłbym przeszkadzać w szukaniu google), mógłbyś potrącić wyjście z conda info --envs, aby wygenerować polecenia conda remove ....

Powiązane problemy