2016-03-01 7 views
5

मैं जानता हूँ कि मैंConda सभी वातावरण को दूर (रूट को छोड़कर)

conda remove -n envname --all 

के साथ एक एकल वातावरण नष्ट कर सकते हैं, लेकिन मैं अक्सर एक specifiy पैकेज को स्थापित करने या परीक्षण यह तो मैं नियमित रूप से साथ अंत के लिए कई नए वातावरण बनाने 5-10 वातावरण और एक दूसरे के बाद उन्हें हटाने के लिए दर्द है। क्या रूट-पर्यावरण को छोड़कर सभी वातावरण को हटाने के लिए एक आसान तरीका है (विंडोज़ के लिए)?

+0

शायद आप 'कोंडा जानकारी --envs' जैसी कुछ कोशिश कर सकते हैं और वातावरण की सूची ले सकते हैं और उस सूची के माध्यम से 'conda remove --name envname --all' जैसे लूप बना सकते हैं। जाहिर है आपको अपने रूट पर्यावरण से बचने की आवश्यकता होगी। – Ringil

+0

@Ringil - यदि मैं जो देख रहा हूं उसके लिए कोई "सुविधा विकल्प" नहीं है, तो आपको पता है कि उस पकड़ को कैसे पकड़ें और खिड़कियों के साथ विकल्प डालें? – MSeifert

उत्तर

5

envs उपनिर्देशिका कि रहता है के अंदर conda काम करता है के अंदर सभी निर्देशिकाएँ निकाली जा रही।

1

मेरी टिप्पणी के अनुसार, आप एक कोंडा कमांड के साथ सभी वातावरण प्राप्त कर सकते हैं और फिर इसके माध्यम से लूप करने की कोशिश कर सकते हैं और उन्हें अलग-अलग हटा सकते हैं। यहां एक तरीका है जिससे आप ऐसा कुछ कर सकते हैं। ध्यान दें कि आपको anaconda_command_prompt_string को उचित स्ट्रिंग के साथ प्रतिस्थापित करना चाहिए जो आपके एनाकोंडा कमांड प्रॉम्प्ट कॉल करता है। इसके अलावा इस कोड शायद काफी नाजुक है:

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

सबसे सुंदर जवाब नहीं है। लेकिन मैं सिर्फ conda info --envs से सभी वातावरण के नामों की प्रतिलिपि बनाउंगा। फिर एक पार्टी बनाने के (या खिड़कियों के लिए .bat) सभी आदेशों आप की जरूरत उदाहरण के साथ फाइल ...

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

या बस कॉपी और पेस्ट कि टर्मिनल में और यह आप को हल करेंगे!

अगर मैं थोड़ा बैश (या .bat) विज़ार्ड था (या कुछ googling करने के लिए परेशान किया जा सकता है) तो conda remove ... कमांड उत्पन्न करने के लिए आप आउटपुट को conda info --envs से पाइप कर सकते हैं।

संबंधित मुद्दे