Virtualenv के साथ `-no-site-package` विकल्प को वापस लाएं


126

मैंने --no-site-packagesविकल्प का उपयोग करके एक वर्चुअन बनाया है और बहुत सारे पुस्तकालय स्थापित किए हैं। अब मैं --no-site-packagesविकल्प को वापस लेना चाहूंगा और वैश्विक पैकेजों का भी उपयोग करूंगा ।

क्या मैं virtualenv को दोबारा बनाए बिना ऐसा कर सकता हूं?

ज्यादा ठीक:

मुझे आश्चर्य होता है कि विकल्प का उपयोग करते हुए वर्चुअन बनाते समय वास्तव में क्या होता है --no-site-packagesजो उस विकल्प का उपयोग नहीं करने का विरोध करता है।

अगर मुझे पता है कि क्या होता है तो मैं समझ सकता हूं कि इसे कैसे करना है।


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

जवाबों:


162

अपने वर्चुअल वातावरण के तहत अपने फ़ोल्डर no-global-site-packages.txtमें फ़ाइल को हटाने (या नाम बदलने) का प्रयास करें Lib

जहाँ vev आपके आभासी वातावरण का नाम है, और python3.4 उदाहरण के लिए, इसमें शामिल अजगर के संस्करण के अनुरूप है:

$ rm venv/lib/python3.4/no-global-site-packages.txt

और अगर आप अपना दिमाग बदलते हैं और इसे वापस लाना चाहते हैं:

$ touch venv/lib/python3.4/no-global-site-packages.txt

नोट: यदि आपको उपरोक्त फ़ाइल दिखाई नहीं देती है, तो आपके पास virtualenv का एक नया संस्करण है। आप इसके बजाय इस उत्तर का अनुसरण करना चाहते हैं


18
वह कर देगा। उस फ़ाइल का अस्तित्व (या कोई नहीं) केवल-साइट-पैकेज ध्वज का एकमात्र प्रत्यक्ष प्रभाव है। Virtualenv की अनुकूलित साइट थिंकपैड उस फ़ाइल की तलाश करती है ताकि यह तय किया जा सके कि वैश्विक साइट-संकुल निर्देशिकाओं को sys.path में जोड़ना है या नहीं।
कार्ल मेयर

प्रतिभाशाली! यह किया! उस उत्तर के लिए बहुत बहुत धन्यवाद, और अतिरिक्त टिप्पणी के लिए कार्ल मेयर का धन्यवाद।
ओलिवियर वर्डियर

1
यह virtualenv/python2.7/no-global-site-packages.txtमेरे ubuntu सर्वर में है।
कैसरसोल

4
Virtualenv के विंडोज संस्करण में virtualenv/pyenv.cfgफ़ाइल है। साइट-पैकेज के लिए एक विकल्प है: include-system-site-packages = false इस मान को बदलें और Activate.ps1 को कॉल करें
georgik

@georgik - इसके लिए लिनक्स संस्करण के venvलिए भी काम करता है Python 3.4
टॉमाज़ डज़िएनक

13

कम से कम Python 3.5.2 के लिए, pyvenv.cfgvirtualenv निर्देशिका की जड़ में फ़ाइल है। तुम सब करने की ज़रूरत है बदलने के लिए है include-system-site-packagesसे ध्वज falseको true:

home = /usr/bin
include-system-site-packages = false  # <- change this to "true"
version = 3.5.2

12

Virtualenvwrapper को virtualenvs को प्रबंधित करने के लिए उपयोग करते समय , आप toggleglobalsitepackagesसाइट पैकेजों का उपयोग करने और न करने के बीच स्विच करने के लिए शेल फ़ंक्शन का उपयोग कर सकते हैं ।


2

/virtualenv_root/lib/और के बीच एक सिमिलिंक जोड़ने का प्रयास करें/path/to/desired/site-packages/


+1 यह मेरे सिस्टम पर काम करता है (ओपनसूट लिनक्स 12.3, पायथन 2.7.3, वर्चुअनव 1.8.4); मेरे पास no-global-site-packages.txtकहीं नहीं है ।
हारून दिगुल्ला

2

अपने venv फ़ोल्डर में जाएं और खोलें pyvenv.cfg। (उदा। यदि आपका आभासी वातावरण कहा जाता है, myenvतो फ़ाइल उसी स्थान पर स्थित होगी myenv\pyvenv.cfg)

आपको एक बूलियन सेटिंग दिखाई देगी जिसे कहा जाता है include-system-site-packages

सेट करें कि trueवैश्विक संकुल का उपयोग करने के लिए सेटिंग

यदि आप वैश्विक पैकेजों का उपयोग करके अक्षम करना चाहते हैं, तो उस सेटिंग को falseइसके बजाय सेट करें ।

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