2010-02-12 15 views
37

सक्रिय करने की आवश्यकता है, मेरे पास वर्चुअलनव और वर्चुअलनव्व्रापर डिफ़ॉल्ट सेटिंग्स के साथ साझा लिनक्स सर्वर पर स्थापित है (वर्चुअलएन्व ~/.virtualenvs में हैं)। मेरे पास कई पायथन स्क्रिप्ट हैं जो केवल सही वर्चुअलएन्व सक्रिय होने पर ही चल सकती हैं।स्क्रिप्ट साझा करना जिनके लिए वर्चुअलएन्व को

अब मैं शेयर करना चाहते सर्वर पर अन्य उपयोगकर्ताओं के साथ उन लिपियों, लेकिन उनमें virtualenv बारे में कुछ पता करने के लिए की आवश्यकता के बिना ... इसलिए वे python scriptname या ./scriptname चला सकते हैं और स्क्रिप्ट पुस्तकालयों में उपलब्ध के साथ चलेंगे मेरी virtualenv।

ऐसा करने का सबसे साफ तरीका क्या है? मैंने कुछ विकल्पों के साथ खिलवाड़ किया है (जैसे वर्चुअलएव प्रदान किए गए शेबैंग लाइन को दुभाषिया प्रदान करने के लिए), लेकिन वे काफी लचीले लगते हैं। कोई सुझाव?


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

+1

एक वर्चुअलनव डेवलपर की ज़रूरतों के लिए है। एक पृथक आविष्कार, परीक्षण निर्भरताओं, आदि में चीजों का परीक्षण करने के लिए। यदि आप इसे वितरित करते हैं, तो आप इसे किसी भी अन्य पायथन स्क्रिप्ट/मॉड्यूल की तरह पैकेज करने में सक्षम हो जाते हैं और उनके अंत में वर्चुअलएन्व की आवश्यकता नहीं होती है। वर्चुअलएन्व में यह क्या है जो इस स्क्रिप्ट के लिए विशिष्ट है जिसे अंतिम उपयोगकर्ता के लिए सिस्टम-व्यापी नहीं किया जा सकता है? – Rick

+0

@ रिहार्डिंग - मैं स्क्रिप्ट को तैनात नहीं कर रहा हूं, बस उन्हें सर्वर पर अन्य उपयोगकर्ताओं के लिए उपलब्ध करा रहा हूं। – Mzzzzzz

+0

कृपया क्रिस ड्यूक्स के जवाब को स्वीकार करने पर विचार करें, जेसीडीएआर द्वारा प्रदान किया गया कोई भी इस मुद्दे का जवाब नहीं देता है (और लेखक सहमत हैं कि यह एक अच्छा जवाब नहीं है), जबकि दूसरा इस मुद्दे को अच्छी तरह से बताता है और इसके लिए एक त्वरित संदर्भ है virtualenv shebang - सवाल मैं इस विषय को खोजने के जवाब देने का प्रयास कर रहा था। आप सबसे अधिक उत्तरदायी उत्तर स्वीकार कर दूसरों की मदद कर सकते हैं। धन्यवाद। – mpiskore

उत्तर

0

यदि यह केवल एक सर्वर पर है, तो लचीलापन अप्रासंगिक है। Shebang संशोधित करें। यदि आप इसके बारे में चिंतित हैं, तो dev सर्वर पर एक पैक, स्थापित प्रतिलिपि बनाएं जो वर्चुअलएन्व का उपयोग नहीं करता है। एक बार जब यह डिवेलपमेंट से बाहर हो जाए, चाहे वह स्थानीय उपयोगकर्ताओं या ग्वाटेमाला में उपयोगकर्ताओं के लिए है, वर्चुअलएन्व अब सही उपकरण नहीं है।

+1

धन्यवाद ... फिर उत्पादन के लिए सही उपकरण क्या है? –

+5

यह इस समस्या का स्वीकार्य उत्तर नहीं होना चाहिए। – boatcoder

+0

सहमत हुए। मैं अब इस जवाब से खड़ा नहीं हूं। – jcdyer

6

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

यदि आपके उपयोगकर्ता प्रोग्रामर हैं, तो मुझे नहीं लगता कि आप उन्हें वर्चुअलएव के बारे में क्यों जानना/सीखना नहीं चाहते हैं।

+0

असल में, मुझे लगता है कि मैं इस दूसरे पैराग्राफ से सहमत हूं। Virtualenv एक शानदार उपकरण है। यदि आप अन्य प्रोग्रामर को कन्वर्ट करने की कोशिश कर रहे हैं, तो उन्हें दिखाएं। इसका उपयोग करना आसान है, और यह अच्छी चीजें करता है। – jcdyer

+1

हालांकि मैं दूसरे पैराग्राफ से असहमत हूं। प्रोग्रामर जो अभी तक पायथन में परिवर्तित नहीं हुआ है, वर्चुअलएन के बारे में पढ़ने के प्रयास को खर्च नहीं करेगा। पाइथन-कनवर्ट्स के लिए यह आसान लगता है क्योंकि उन्होंने वर्चुअलएन्व के साथ एक घंटे या दो खेल रहे हैं (जब तक वे इस विचार में उपयोग नहीं करते हैं और इसका उपयोग कर सकते हैं। वह निवेश बाधा है। –

100

स्क्रिप्ट की शुरुआत में निम्न जादू (5) का उपयोग करें।

#!/usr/bin/env python 

बदलें कि कौन सा वर्चुअलएन्व सक्रिय है और यह उस वर्चुअलनेव से पायथन का उपयोग करेगा। वर्चुअलएन्व को निष्क्रिय करें, यह अभी भी चलता है।

+7

एक वर्चुअलनेव आपके वर्चुअलनव पायथन को इंगित करने के लिए/usr/bin/env पायथन बदलता है। तो यह –

+0

पर जाने का सही तरीका है धन्यवाद @ जोनास ग्रॉगर, यह स्पष्टीकरण मेरी समझ में लापता ब्लॉक था। –

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