2016-04-19 7 views
10

हम बिना इंटरनेट के पाइथन पैकेज स्थापित करने की कोशिश कर रहे हैं।इंटरनेट के बिना पाइथन पैकेज स्थापित करना और स्रोत कोड का उपयोग .tar.gz और .whl

For ex : python-keystoneclient 

ऐसी स्थिति में हमने संकुल https://pypi.python.org/pypi/python-keystoneclient/1.7.1 से डाउनलोड किया है और सर्वर में यह रखा।

हालांकि, tar.gz और .whl संकुल को संस्थापित करते समय, इंस्टॉलेशन पहले स्थापित किए जाने वाले निर्भर पैकेजों की तलाश में है। चूंकि सर्वर में कोई इंटरनेट कनेक्शन नहीं है, इसलिए यह असफल हो रहा है।

पूर्व के लिए: अजगर-keystoneclient के लिए हम एक बार फिर से अपने नेस्टेड निर्भरता की तलाश में जब मैं उपरोक्त सूची में से एक के बाद संकुल एक स्थापित करने का प्रयास निम्नलिखित निर्भर संकुल

stevedore (>=1.5.0) 
six (>=1.9.0) 
requests (>=2.5.2) 
PrettyTable (<0.8,>=0.7) 
oslo.utils (>=2.0.0) 
oslo.serialization (>=1.4.0) 
oslo.i18n (>=1.5.0) 
oslo.config (>=2.3.0) 
netaddr (!=0.7.16,>=0.7.12) 
debtcollector (>=0.3.0) 
iso8601 (>=0.1.9) 
Babel (>=1.3) 
argparse 
pbr (<2.0,>=1.6) 

है,।

क्या कोई तरीका है कि हम सभी पाइथन-कीस्टोनक्लिएंट जैसे पायथन मॉड्यूल को स्थापित करने के लिए निर्भर पैकेज सूचीबद्ध कर सकते हैं।

+0

इसके लिए आप कंटेनरों का उपयोग करके भाग्य प्राप्त कर सकते हैं। –

उत्तर

19

यह है कि कैसे मैं इस मामले को संभालने है

mkdir keystone-deps 
pip download python-keystoneclient -d "/home/aviuser/keystone-deps" 
tar cvfz keystone-deps.tgz keystone-deps 

फिर गंतव्य मशीन के लिए टार फ़ाइल ले कि इंटरनेट का उपयोग नहीं है और निम्न कार्य करें:

tar xvfz keystone-deps.tgz 
cd keystone-deps 
pip install python_keystoneclient-2.3.1-py2.py3-none-any.whl -f ./ --no-index 
+2

इसे पीपी के "डाउनलोड" विकल्प के साथ अपडेट किया जा सकता है। इसके अतिरिक्त, पीआईपी विकल्प "नो-इंडेक्स" की व्याख्या करना अच्छा लगेगा। – fffred

+0

क्या होगा यदि मेरे पास लक्षित माइनिन पीआईपी कमांड पर नहीं है? –

+0

आप यहां से हल्का वजन पाइप प्राप्त कर सकते हैं: https://bootstrap.pypa.io/get-pip.py –

0

pipdeptree निर्भरता पेड़ के रूप में वर्चुअलनव में स्थापित पायथन पैकेज प्रदर्शित करने के लिए एक कमांड लाइन उपयोगिता है। बस इसे का उपयोग करें:

मशीन पर जहाँ मैं इंटरनेट की पहुंच है: https://github.com/naiquevin/pipdeptree

3

हमारे पास एक समान स्थिति है काम पर, जहां उत्पादन मशीनों के पास इंटरनेट तक पहुंच नहीं है; इसलिए सब कुछ ऑफ़लाइन और ऑफ-होस्ट प्रबंधित किया जाना है।

यहाँ मैं सफलता के विभिन्न मात्रा के साथ की कोशिश की है:

  1. basket जो एक छोटे उपयोगिता है कि आप अपने इंटरनेट से कनेक्ट किया मेजबान पर चलाया जाता है। पैकेज स्थापित करने का प्रयास करने के बजाय, यह इसके बजाय इसे डाउनलोड करेगा, और बाकी सब कुछ इसे निर्देशिका में स्थापित करने की आवश्यकता है। फिर आप इस निर्देशिका को अपनी लक्षित मशीन पर ले जाते हैं। पेशेवर: उपयोग करने के लिए बहुत आसान और सरल, कोई सर्वर सिरदर्द नहीं; कॉन्फ़िगर करने के लिए कोई बंदरगाहों। विपक्ष: कोई वास्तविक शोस्टॉपर्स नहीं हैं, लेकिन सबसे बड़ा यह है कि यह आपके द्वारा प्राप्त किए गए किसी भी संस्करण का सम्मान नहीं करता है; यह हमेशा एक पैकेज का नवीनतम संस्करण डाउनलोड करेगा।

  2. एक स्थानीय पीपीआई सर्वर चलाएं। प्रयुक्त pypiserver और devpipypiserver स्थापित करने और सेटअप करने के लिए बहुत आसान है; devpi थोड़ा और अधिक उलझन लेता है। वे दोनों एक ही काम करते हैं - वास्तविक पीपीआई के लिए प्रॉक्सी/कैश के रूप में कार्य करें और किसी भी घर के उगाए गए पैकेज के लिए स्थानीय पीपीआई सर्वर के रूप में कार्य करें। localshop एक नया है जो मैं देख रहा था, आसपास भी नहीं था, यह भी एक ही विचार है। तो यह कैसे काम करता है यह है कि आपकी इंटरनेट-प्रतिबंधित मशीन इन सर्वर से कनेक्ट होगी, फिर वे इंटरनेट से कनेक्ट हो जाएंगी ताकि वे वास्तविक भंडार को कैश और प्रॉक्सी कर सकें।

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

हालांकि हमें दूसरे विकल्प के साथ बहुत दूर मिला, इसलिए मैं निश्चित रूप से इसकी अनुशंसा करता हूं।

आखिरकार, संगतता के मुद्दों और पुस्तकालयों से निपटने के थक गए, हमने सर्वर के पूरे सर्कस को व्यावसायिक रूप से समर्थित डॉकर कंटेनर में माइग्रेट कर दिया।

इसका मतलब है कि हम सब कुछ पूर्व-कॉन्फ़िगर किया गया है, वास्तव में उत्पादन मशीनों पर कुछ भी स्थापित करने की आवश्यकता नहीं है और यह हमारे लिए सबसे ज्यादा सिरदर्द मुक्त समाधान रहा है।

हमने स्थानीय डॉकर छवि सर्वर के साथ पीपीआई रिपॉजिटरीज़ को प्रतिस्थापित किया।

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