Apt-get का उपयोग करके virtualenv में पैकेज स्थापित करें


16

इस उत्तर के अनुसार , apt-getसंकुल सिस्टम-व्यापी (विहित से) स्थापित करता है, और केवल pipसंकुल को एक वर्चुअनव (Pypi से) में संस्थापित कर सकता है।

हालांकि, मुझे एक virtualenv में एक पैकेज स्थापित करने की आवश्यकता है जो कि केवल apt-getPIPi द्वारा होस्ट नहीं किया गया है।

मैं उसको कैसे करू?


अच्छा सवाल पाल।
rɑːdʒɑ

जवाबों:


8

एक अन्य विकल्प यह है कि फ़ाइल को डाउनलोड करें apt-get download, इसे dpkg -xनिकाले और निकाले गए फ़ाइलों को अपने वर्चुअन में ले जाएँ:

उदाहरण:

apt-get download python-xyz

इस परिणाम को मानें:

./python-xyz_1.2.3-3ubuntu5_amd64.deb

फिर, .deb फ़ाइल के डेटा भाग को निकालने के लिए dpkg का उपयोग करें:

dpkg -x python-xyz_1.2.3-3ubuntu5_amd64.deb ./xyz-tmp

नई बनाई गई ./xyz-tmpनिर्देशिका में, अब आपके पास सभी फ़ाइलें हैं जो /आपके द्वारा उपयोग किए गए (रूट) में स्थापित की गई होंगी apt-get install

वे मान रहे हैं:

./xyz-tmp/usr/lib/python2.7/dist-packages/xyz/
./xyz-tmp/usr/lib/python2.7/dist-packages/xyz-1.2.3.egg-info

तुम अब भी उपनिर्देशिका मैप करने की आवश्यकता (उदाहरण के लिए dist-packagesबनाम site-packages), और फिर अपने virtualenv में फ़ाइलों को स्थानांतरित कर सकते हैं (एक virtualenv संभालने /home/user/.virtualenvs/py27):

mv ./xyz-tmp/usr/lib/python2.7/dist-packages/* /home/user/.virtualenvs/py27/lib/python2.7/site-packages/

मेरे पिछले उत्तर की तुलना में, इस दृष्टिकोण का यह फायदा है कि आपको शोध करने की आवश्यकता नहीं है कि कौन सी फाइलें स्थापित हुईं, क्योंकि आप उन्हें निष्कर्षण निर्देशिका में देख सकते हैं। यह अभी भी निकाले गए संग्रह और virtualenv के बीच निर्देशिकाओं के मानचित्रण की आवश्यकता है।


+1, यहां इस दृष्टिकोण का एक और उदाहरण है, जो उन पैकेजों को स्थापित करने के लिए बहुत अच्छी तरह से काम करता है जो केवल APT के माध्यम से एक virtualenv में उपलब्ध हैं - हाल ही में पायथन 3.7 का उपयोग करके कुछ ऐसा ही किया था।
रिचवेल

0

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

काल्पनिक उदाहरण:

sudo apt-get python-xyz

मान लें कि यह आपके सिस्टम पायथन 2.7 में "xyz" नामक एक पैकेज स्थापित करता है, तो आपको यह मिल सकता है:

/usr/lib/python2.7/dist-packages/xyz/
/usr/lib/python2.7/dist-packages/xyz-1.2.3.egg-info

"Xyz" पैकेज से संबंधित फाइलों को अपने virtualenv (virtualenv मानकर /home/user/.virtualenvs/py27) को कॉपी करें :

/home/user/.virtualenvs/py27/lib/python2.7/site-packages/xzy/
/home/user/.virtualenvs/py27/lib/python2.7/site-packages/xzy-1.2.3.egg-info

कठिनाई यह निर्धारित करने में (1) है कि कौन सी फाइलें एक विशेष पैकेज से संबंधित हैं, और (2) सिस्टम पाइथन और वर्चुअनव (उदाहरण में ऊपर उदाहरण में dist-packagesबनाम site-packages) के बीच इसी उपनिर्देशिका को मैप करने में।

अगर किसी को इसके साथ अधिक अनुभव है, तो कृपया टिप्पणी करें।

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