2013-07-09 35 views
6

पर पायथन निर्भरता प्रबंधन मैं mazjob/boto मॉड्यूल के माध्यम से अमेज़ॅन के ईएमआर को कोड भेज रहा हूं। मुझे कुछ बाहरी पायथन निर्भरताएं मिली हैं (यानी numpy, boto, आदि) और वर्तमान में पाइथन पैकेज के स्रोत को डाउनलोड करना है, और mrjob.config फ़ाइल के "python_archives" फ़ील्ड में उन्हें टैरबॉल के रूप में भेजना है।ईएमआर

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

pip install -r requirements.txt 

जैसा कि मैं स्थानीय रूप से करता हूं?

उत्तर

3

इसे पूरा करने का एक तरीका bootstrap action का उपयोग कर रहा है। आप शैल स्क्रिप्ट चलाने के लिए इनका उपयोग कर सकते हैं।

आप ऐसा ही कुछ करता है एक सेटअप अजगर फ़ाइल है, तो: अपने requirements.txt अपलोड करने के लिए की आवश्यकता होगी,

0

तो बिना

requirements = open("requirements.txt", "r") 
shell_script = open("pip.sh", "w+") 
shell_script.write("sudo apt-get install python-pip\n") 
for line in requirements: 
    shell_script.write("sudo pip install -I " + line) 

तो फिर तुम सिर्फ बूटस्ट्रैप कार्रवाई के रूप में इस चला सकते हैं, यदि आप ' mrjob का उपयोग कर, मुझे सिर्फ पीपी कॉल को सीधे मेरी .mrjob.conf फ़ाइल में बूटस्ट्रैप एक्शन के रूप में डालकर कुछ सफलता मिली है। यह require.txt फ़ाइल का उपयोग करने के रूप में सुरुचिपूर्ण नहीं है (यह आपकी सभी नौकरियों के लिए समान मॉड्यूल लोड करेगा)। उदाहरण के लिए, मेरी conf फ़ाइल की तरह दिखता है:

runners: 
    emr: 
    aws_access_key_id: xx 
    aws_secret_access_key: xx 
    ec2_key_pair: xx 
    ec2_key_pair_file: xx 
    ssh_tunnel_to_job_tracker: true 
    bootstrap_cmds: 
     - sudo apt-get install -y python-pip 
     - sudo pip install pgnparser 
     - sudo pip install boto 

और उस pgnparser और boto मॉड्यूल लोड होगा मुझे मेरे mrjob लिपियों में उपयोग करने के लिए।

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