कैसे सूडो के साथ एक अजगर virtualenv का उपयोग करने के लिए?


47

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

चूंकि उबंटू पर रूट उपयोगकर्ता का उपयोग करना अच्छी बात नहीं है , क्या sudoकोई वर्चुअन का उपयोग करने का एक तरीका है ? या शायद यह सही दृष्टिकोण नहीं है, और मुझे पूरी तरह से नए अजगर की स्थापना करनी चाहिए?

मैं Ubuntu 12.04 (और अजगर 2.7) के 64 बिट संस्करण का उपयोग कर रहा हूं।


1
निम्नलिखित कार्य करता है?
सूडो

जवाबों:


57

यह मुद्दा लगभग निश्चित रूप से है कि जब आप चलाते हैं sudo, तो वर्चुअन वातावरण चर, उपनाम, कार्य, इत्यादि नहीं किए जाते हैं।

इसका समाधान स्पष्ट रूप से आभासी वातावरण के पायथन को निष्पादन योग्य बनाना होगा sudo। उदाहरण के लिए यदि आपका virtualenv ./AwesomeProject है, तो आप sudo ./AwesomeProject/bin/python <script>virtualenv के साथ रूट विशेषाधिकारों के साथ स्क्रिप्ट का उपयोग करने के लिए चला सकते हैं ।


3
आप अपनी स्क्रिप्ट की पहली पंक्ति को अपने वर्चुअन में पायथन बाइनरी को इंगित कर सकते हैं। #!<virtualenv_dir>/bin/python
ऑरेंजट्यूक्स

ऊ, यह बताते हुए कि यह अब तक केवल समाधान है। Mac पर, sudo python वर्चुअल env से अजगर का उपयोग करता है।
गफान

4

बस इस पर ठोकर खाई और दूसरों के लिए, जो एक ही मुद्दा पा सकते हैं, केन सही है कि एनवी चर को खत्म नहीं किया जा रहा है। मैंने जो समाधान किया, वह मेरी स्क्रिप्ट में निम्नलिखित पंक्तियों को जोड़ने का था। यह स्क्रिप्ट से सीधे आभासी वातावरण लोड करने का अतिरिक्त लाभ है। (मतलब आप किसी अन्य वर्कअराउंड के बिना स्क्रिप्ट का उपयोग क्रॉस्टैब या लॉन्च के साथ कर सकते हैं।)

base_dir = os.path.dirname(os.path.abspath(__file__))
activate_this = os.path.join(base_dir, 'venv/bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))

यहाँ अधिक पृष्ठभूमि: https://virtualenv.pypa.io/en/latest/userguide.html#use-virtualenv-without-bin-python


4

कभी-कभी आपको $ PATH को अपडेट करने की आवश्यकता होती है क्योंकि स्क्रिप्ट अन्य प्रोग्राम चलाता है। उदाहरण के लिए PATI- इंस्टॉल को PATH में py2dsc-deb की जरूरत है। यह आदेश काम करता है:sudo sh -c ". venv/bin/activate ; pypi-install $PACKAGE"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.