2011-12-12 18 views
6

वर्तमान में मैं कुछ उपयुक्त या आरपीएम का उपयोग कर पैकेज स्थापित करने की आवश्यकता के अंदर। मैंने सिस्टम को अपडेट या अपग्रेड करने के लिए lib "apt" देखा, लेकिन यह संभव है कि यह एक पैकेज स्थापित करने के लिए उपयोग करें?का उपयोग ओएस "apt-get xxx स्थापित" के अनुसार, अजगर स्क्रिप्ट

मैं भी "उपप्रक्रिया" का उपयोग करने की कोशिश कर रहा था:

subprocess.Popen('apt-get install -y filetoinstall', shell=True, stdin=None, stdout=None, stderr=None, executable="/bin/bash") 

लेकिन इस आदेश को खोल में सभी प्रक्रिया से पता चलता है, मैं यह नहीं छुपा सकते।

आपकी मदद के लिए धन्यवाद।

+0

यह आप नहीं मिल रहा है ठीक से काँटेदार लगता है। क्या आपने प्रलेखन पढ़ने की कोशिश की है? – bvd

+0

अजगर 3.5+ लिए, देखें [ 'subprocess.run()'] (https://docs.python.org/3/library/subprocess.html#subprocess.run) – phoenix

उत्तर

10

आप subprocess पुस्तकालय से check_call उपयोग कर सकते हैं।

from subprocess import STDOUT, check_call 
import os 
check_call(['apt-get', 'install', '-y', 'filetoinstall'], 
    stdout=open(os.devnull,'wb'), stderr=STDOUT) 

इस मामले में stdout/dev/null के लिए, या os.devnull डंप।

os.devnull मंच स्वतंत्र है, और विंडोज पर POSIX और nul पर /dev/null वापस आ जाएगी (जो प्रासंगिक नहीं है जब से तुम apt-get उपयोग कर रहे हैं लेकिन, अभी भी पता करने के लिए अच्छा :))

+0

धन्यवाद रसेल! –

+0

@Cirux - आपका बहुत स्वागत है। –

+0

धन्यवाद दोस्तों! मैं प्रत्येक समाधान का हिस्सा उपयोग करता हूं। मेरा कोड: proc = subprocess.Popen ('apt-get install -y FILE', shell = True, stdin = none, stdout = open (os.devnull, "wb"), stderr = STDOUT, execable = "/bin/bash ") proc.wait() जोड़ा गया: stdout और।इंतजार आपसे एक बार और –

0

/dev/बातिल करने के लिए उत्पादन रीडायरेक्ट करने के लिए इसका उपयोग करें:

proc = subprocess.Popen('apt-get install -y filetoinstall', shell=True, stdin=None, stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash") 
proc.wait() 

कॉल .Wait करने के लिए() को ब्लॉक करेगा जब तक apt-get पूरा हो गया है।

+0

आह ठीक धन्यवाद, लेकिन मैं कार्यक्रम कैसे रोक सकता , apt खत्म करने की प्रतीक्षा कर रहा है, और जब स्थापित किया गया है, अन्य कार्यों के साथ procced? –

+0

मैंने आपके लिए अपना जवाब अपडेट किया। –

+0

अरे आदमी, अर्जेंटीना से बहुत बहुत धन्यवाद !!! –

3

इस विशेष कार्य के लिए, एक के रूप में subprocess के विकल्प के लिए आप Fabric का उपयोग कर सकते हैं, जो कि बिल्ड को स्वचालित करने के लिए एक पायथन परिनियोजन उपकरण है।

+0

धन्यवाद लिंक आप साझा किया है इस देता है: अनुमति अस्वीकृत इस पृष्ठ को देखने के लिए उचित अनुमति नहीं है। अनुमति का अनुरोध करने के लिए कृपया इस परियोजना के मालिक से संपर्क करें। – Ayush

+0

@ आयुष: लिंक –

+0

अपडेट किया गया बहुत बहुत धन्यवाद। – Ayush

2

लोग धन्यवाद! मैं प्रत्येक समाधान का हिस्सा उपयोग करता हूं। मेरे कोड:

proc = subprocess.Popen('apt-get install -y FILE', shell=True, stdin=None, stdout=open(os.devnull,"wb"), stderr=STDOUT, executable="/bin/bash") 
proc.wait() 

जोड़ा गया: stdout और .Wait

आप अर्जेन्टीना से एक बार और धन्यवाद!