वाह, यह काफी प्रश्नों का एक सेट है। उनमें से कई वास्तव में अधिक जानकारी के साथ अपने स्वयं के SO सवाल के लायक होंगे। मैं अपनी पूरी कोशिश करूंगा:
First of all, are virtualenv and pip supposed to be in a usable state by now?
हां, हालांकि वे सभी की जरूरतों को पूरा नहीं करते हैं। पिप और virtualenv (अजगर पैकेज प्रबंधन में सब कुछ के साथ) आदर्श से दूर हैं, लेकिन वे व्यापक रूप से इस्तेमाल और फिर भी पर निर्भर कर रहे हैं।
How should virtualenv be installed? I'm not quite ready to believe it's as convoluted as explained elsewhere.
जवाब आप लिंक जटिल है क्योंकि यह आपके वैश्विक अजगर स्थापना करने के लिए कोई भी बदलाव करने से बचते हैं और इसके बजाय ~/.local
में सब कुछ स्थापित करने के लिए कोशिश कर रही है। इसमें कुछ फायदे हैं, लेकिन सेटअप के लिए अधिक जटिल है। यह virtualenvwrapper भी स्थापित कर रहा है, जो वर्चुअलएन्व के साथ काम करने के लिए सुविधा बैश स्क्रिप्ट का एक सेट है, लेकिन वर्चुअलएन्व का उपयोग करने के लिए आवश्यक नहीं है।
आप उबंटू, aptitude install python-setuptools
easy_install virtualenv
के बाद (अपने वैश्विक अजगर पर्यावरण को कोई नुकसान कर रही है, जब तक आप भी उबंटू virtualenv पैकेज स्थापित किया था बिना आप एक काम कर virtualenv स्थापना मिलना चाहिए, जो मैं के रूप में यह होगा की सलाह नहीं देते पर हैं शायद एक पुराना संस्करण हो)।
Is there a set of tested instructions for how to install matplotlib in a virtual environment? For some reason it always wants to compile it here instead of just installing a package, and it always ends in failure (even after build-dep which took up 250 MB of disk space). After a whole bunch of warnings it prints src/mplutils.cpp:17: error: ‘vsprintf’ was not declared in this scope.
यह क्योंकि पिप, डिजाइन द्वारा, केवल स्रोत से स्थापित करता है यह पूर्व संकलित युग्मक स्थापित नहीं है "हमेशा संकलित करने के लिए चाहता है",। यह एक विवादास्पद विकल्प है, और शायद यही कारण है कि पाइप ने पाइथन वेब डेवलपर्स के बीच व्यापक रूप से गोद लेने को देखा है, जो अधिक शुद्ध-पायथन पैकेज का उपयोग करते हैं और आमतौर पर पॉज़िक्स वातावरण में विकसित और तैनाती करते हैं जहां एक कामकाजी संकलन श्रृंखला मानक होती है।
डिज़ाइन पसंद का कारण यह है कि प्रीकंपील्ड बाइनरी प्रदान करने के लिए विभिन्न प्लेटफार्मों के साथ एक संयोजन विस्फोट समस्या होती है और आर्किटेक्चर का निर्माण होता है (पायथन संस्करण, यूसीएस -2 बनाम यूसीएस -4 पायथन बिल्ड, 32 बनाम 64-बिट ...) । जिस तरह से काम करता है के easy_install PyPI प्रकार पर सही द्विआधारी पैकेज पाता है, समय के सबसे अधिक है, लेकिन इन सभी कारकों के लिए खाते में नहीं है और तोड़ सकते हैं। तो पीआईपी पूरी तरह से उस मुद्दे से बचाता है (इसे एक आवश्यकता के साथ बदलकर कि आपके पास एक कामकाजी संकलन वातावरण है)।
कई मामलों में, सी संकलन की आवश्यकता वाले पैकेजों में धीमी गति से चलने वाले रिलीज शेड्यूल भी होते हैं और इसके बजाय बस उनके लिए ओएस पैकेज स्थापित करना स्वीकार्य है। हालांकि, विभिन्न वर्चुअलएन्ड्स में उनके विभिन्न संस्करणों के साथ काम करने की अनुमति नहीं है।
मैं क्या आपके संकलन जिसके कारण त्रुटि पता नहीं है, यह आदेशों की इस श्रृंखला के साथ (उबंटू 10.10 पर) मेरे लिए काम करता है:
virtualenv --no-site-packages tmp
. tmp/bin/activate
pip install numpy
pip install -f http://downloads.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.0.1/matplotlib-1.0.1.tar.gz matplotlib
"-f" लिंक आवश्यक है सबसे हाल ही में प्राप्त करने के लिए संस्करण, matplotlib के unusual download URLs on PyPI के कारण।
How does either tool interact with setup.py? pip is supposed to replace easy_install, but it's not clear whether it's a drop-in or more complicated relationship.
setup.py
फ़ाइल distutils, पायथन मानक पुस्तकालय का पैकेज प्रबंधन के एक सम्मेलन है "समाधान।" distutils
अकेले कुछ प्रमुख विशेषताओं को याद कर रहा है, और setuptools एक व्यापक रूप से उपयोग किया जाने वाला तीसरा पक्ष पैकेज है जो कुछ अतिरिक्त सुविधाओं को प्रदान करने के लिए "गले लगाता है और विस्तार करता है"। setuptools
भी setup.py
का उपयोग करता है। easy_install
इंस्टॉलर के साथ बंडल इंस्टॉलर है। Setuptools विकास कई सालों से रुक गया, और distribute कुछ लंबी बग ठीक करने के लिए setuptools का एक कांटा था। आखिर में फोर्क को सेटअप टोल में वितरित करने के विलय के साथ हल किया गया था, और सेटअपटोल विकास अब सक्रिय है (एक नए रखरखाव के साथ)।
distutils2distutils
का एक अधिकतर पुनर्लेखित नया संस्करण था जिसने setuptools/वितरण से सर्वोत्तम विचारों को शामिल करने का प्रयास किया था, और इसे पायथन मानक पुस्तकालय का हिस्सा बनना था। दुर्भाग्यवश यह प्रयास असफल रहा, इसलिए सेटअप के समय के लिए पायथन पैकेजिंग के लिए वास्तविक तथ्य बना हुआ है।
पिप easy_install बदल देता है, लेकिन यह setuptools को प्रतिस्थापित नहीं करता; इसे setuptools की आवश्यकता है और इसके शीर्ष पर बनाता है। इस प्रकार यह setup.py
का भी उपयोग करता है।
Is virtualenv only for development mode, or should the users also install it?
इसका कोई भी सही जवाब नहीं है; इसका इस्तेमाल किसी भी तरह से किया जा सकता है। अंत में यह वास्तव में आपके उपयोगकर्ता की पसंद है, और आपका सॉफ़्टवेयर आदर्श रूप से वर्चुअलएन्व के अंदर या बाहर स्थापित करने में सक्षम होना चाहिए; यद्यपि आप एक दृष्टिकोण या दूसरे पर दस्तावेज और जोर देना चुन सकते हैं। यह इस बात पर निर्भर करता है कि आपके उपयोगकर्ता कौन हैं और आपके सॉफ़्टवेयर को इंस्टॉल करने के लिए उन्हें किस वातावरण की आवश्यकता है।
Will the resulting package be installed with the minimum requirements (like the current egg), or will it be installed with sources & binaries for all dependencies plus all the build tools, creating a gigabyte monster in the virtual environment?
यदि संकुल की आवश्यकता वाले पैकेज को पीपी के माध्यम से स्थापित किया गया है, तो इसे स्रोत से संकलित करने की आवश्यकता होगी। यह किसी भी निर्भरता पर भी लागू होता है जिसके लिए संकलन की आवश्यकता होती है।
यह है कि क्या आप एक virtualenv का उपयोग के सवाल से संबंधित नहीं है। easy_install
डिफ़ॉल्ट रूप से वर्चुअलएन्व में उपलब्ध है और वहां ठीक काम करता है। यह प्री-कंपाइल बाइनरी अंडे इंस्टॉल कर सकता है, जैसे कि यह वर्चुअलएन्व के बाहर करता है।
Will the users have to modify their $PATH and $PYTHONPATH to run the resulting package if it's installed in a virtual environment?
आदेश में एक virtualenv में स्थापित कुछ भी उपयोग करने के लिए है, तो आप virtualenv के bin/
निर्देशिका में अजगर बाइनरी (या किसी अन्य लिपि virtualenv इस द्विआधारी संदर्भ में स्थापित) का उपयोग करने की जरूरत है। सबसे आम तरीका यह करने के लिए virtualenv के activate
या activate.bat
स्क्रिप्ट का उपयोग करने के लिए अस्थायी रूप संशोधित करने के लिए खोल PATH
तो virtualenv के bin/
निर्देशिका पहले है। PYTHONPATH
संशोधित करना वर्चुअलएन्व के साथ आम तौर पर उपयोगी या आवश्यक नहीं है।
Do I need to create a script from a text string for virtualenv like in the bad old days?
सं
What is with the #egg=Package URL syntax? That's not part of the standard URL, so why isn't it a separate parameter?
"# अंडा = ProjectName-संस्करण" URL खंड हैक पहले introduced by setuptools and easy_install था। चूंकि दिए गए पैकेज नाम और संस्करण के लिए स्थापित करने के लिए उम्मीदवार वितरण खोजने के लिए वेब से easy_install scrapes लिंक, इस हैक ने पैकेजर्स लेखकों को पीईपीआई पर लिंक जोड़ने की अनुमति दी है कि easy_install समझ सकता है, भले ही वे अपनी फ़ाइलों के लिए easy_install के मानक नामकरण सम्मेलनों का उपयोग न करें ।
Where is @rev included in the URL? At the end I suppose, but the documentation is not clear about this ("You can also include @rev in the URL").
एक जोड़े वाक्य कि उद्धृत टुकड़ा के बाद वहाँ के लिए एक लिंक है "अन्य सुविधाओं के बारे में जानने के लिए the requirements file format पढ़ें।" @rev
सुविधा पूरी तरह से प्रलेखित और प्रदर्शित की गई है।
What is supposed to be understood by using an existing requirements file as "as a sort of template for the new file"? This could mean any number of things.
अगले ही वाक्य "यह क्रम में devel-req.txt में सूचीबद्ध संकुल रखने के लिए और टिप्पणियों को सुरक्षित रखने जाएगा।" कहते हैं मुझे यकीन नहीं है कि एक बेहतर संक्षिप्त विवरण क्या होगा।
AFAIK, pip और virtualenv setuptools के लिए प्रतिस्थापन नहीं हैं। वितरण सेटअपtools के लिए सुझाए गए प्रतिस्थापन है, पाइप easy_install की जगह लेता है, और वर्चुअलनव अपनी विशेष चीज़ है। पहले दो पैकेज रखरखाव का वर्णन करता है कि पैकेज को कैसे इंस्टॉल किया जाए, अगले दो इंस्टॉलर को इंस्टॉल किए गए (और निर्भरता स्थापित करें) का ट्रैक रखने में मदद करें, और अंतिम उपयोगकर्ता को आसानी से स्थापित संकुल के एकाधिक संग्रहों (जैसे विभिन्न संस्करणों) एक ही पैकेज के)। – AFoglia