मैं एक छोटे से अधिक इस विषय की जांच की। मैं techtonik के बयान से शुरू कर दिया - जवाब सरल है - कोई भी इसे लागू किया। हालांकि, यह एक और सवाल पूछता है - क्यों किसी ने इसे लागू नहीं किया? मुझे संदेह है कि जवाब इसलिए है क्योंकि यह काम करता है। इससे अभी तक एक और सवाल उठता है - यह क्यों काम करता है?
कारण सब कुछ DLLs
फ़ोल्डर के बिना काम करता virtualenv में नकल की जा रही है कि
- अजगर खोज
sys.path
किसी भी dll यह
sys.path
जरूरत virtualenv के सक्रियण के बाद मूल DLLs
फ़ोल्डर
के पथ को मिल रहा है
पहले बयान बससे DLLs
फ़ोल्डर के लिए पथ को हटाने के द्वारा परीक्षण किया जा सकताऔर select
मॉड्यूल आयात करने का प्रयास कर रहा है (इस मॉड्यूल को DLLs
फ़ोल्डर से select.pyd
फ़ाइल की आवश्यकता है) जो तब विफल हो जाता है।
टिप्पणी में आप कहते हैं कि मैं पाइथन कोड के साथ वर्चुअल वातावरण में पायथन मॉड्यूल के डीएलएल रखना चाहता हूं। वर्चुअलएन्व में DLLs
फ़ोल्डर को कॉपी करके संभव है। वर्चुअलनव के सक्रियण के बाद sys.path
वर्चुअलएन्व के अंदर DLLs
फ़ोल्डर के पथ के लिए sys.path
भी है (हालांकि वर्चुअलएनवी बनाते समय ऐसा कोई फ़ोल्डर नहीं बनाया जा रहा है)। यह पथ मूल DLLs
फ़ोल्डर के पथ से पहले रखा गया है जिसका अर्थ है कि इसे पहले खोजा जा रहा है और इस प्रकार मूल DLLs
फ़ोल्डर को ओवरराइड करता है।
मैंने पायथन की मेलिंग सूची में DLLs folder on Windows शीर्षक वाले प्रश्न पोस्ट किए।
स्रोत
2013-01-16 13:32:25
"वर्चुअलएन्व के सक्रियण के बाद sys.path में मूल DLLs फ़ोल्डर का पथ होता है" मैंने अपने env को सक्रिय नहीं किया है, और इसमें 'sys.path' में मूल DLLs फ़ोल्डर का पथ भी शामिल है। क्या मैंने आपको गलत समझा? – cubuspl42
* (...) वर्चुअलएन्व के सक्रियण के बाद 'sys.path' ** ** ** वर्चुअलनव (...) के अंदर 'डीएलएलएस' फ़ोल्डर के लिए पथ भी है * वर्चुअलएन्व सक्रिय किए जाने के बिना' sys.path' में पथ * पाइथन की स्थापना से डीएलएल * फ़ोल्डर। वर्चुअलएन्व को सक्रिय करने के बाद 'sys.path' में ** ** ** ** वर्चुअलएन्व के विशिष्ट * डीएलएल * फ़ोल्डर और पाइथन की स्थापना से * डीएलएल * फ़ोल्डर में शामिल हैं। –