क्या पायथन में पैकेज / मॉड्यूल प्रबंधन प्रणाली है?


145

क्या पाइथन में एक पैकेज / मॉड्यूल प्रबंधन प्रणाली है, रूबी के समान रूबीज हैं जहां आप कर सकते हैं gem install packagename ?

पायथन मॉड्यूल स्थापित करने पर , मैं केवल संदर्भ देखता हूं python setup.py install, लेकिन इसके लिए आपको पहले पैकेज ढूंढना होगा।


3
आपको लगता है पायथन के पैकेज सूचकांक PyPI पर इस मुद्दे पर वोट और टिप्पणी पैकेज इंस्टॉल करने के लिए कैसे स्पष्ट निर्देश होना चाहिए, तो कृपया bitbucket.org/pypa/pypi/issue/149/...
कर्नल आतंक

जबकि यह उस समय चालू था, इस सवाल का लिंक अब विरासत डिस्टुटिल डॉक्यूमेंटेशन के लिए है। मैंने Bugs.python.org/issue26014 को यह दर्ज करने के लिए दायर किया कि इन डॉक्स को स्पष्ट करने की आवश्यकता है कि वे अब अंतिम उपयोगकर्ता प्रलेखन के रूप में उपयोग के लिए उपयुक्त नहीं हैं (वे पूरी तरह से उपकरण कार्यान्वयनकर्ताओं के लाभ के लिए रखे गए हैं)।
ncoghlan

जवाबों:


213

हाल की प्रगति

मार्च 2014 : खुशखबरी! पाइथन 3.4 पिप के साथ जहाज। पिप लंबे समय तक पायथन के वास्तविक मानक पैकेज प्रबंधक रहे हैं। आप इस तरह से एक पैकेज स्थापित कर सकते हैं :

pip install httpie

Wahey! यह किसी भी पायथन रिलीज की सबसे अच्छी विशेषता है। यह समुदाय के पुस्तकालयों के धन को सभी के लिए सुलभ बनाता है। सेटअप की निषेधात्मक कठिनाई के कारण न्यूबॉय को सामुदायिक पुस्तकालयों के उपयोग से बाहर नहीं रखा गया है।

हालांकि , पायथन पैकेजिंग अनुभव के साथ कई बकाया निराशाएं हैं। संचयी रूप से, वे न्यूटन के लिए पायथन को बहुत ही सुंदर बनाते हैं। इसके अलावा, उपेक्षा का लंबा इतिहास (यानी 14 साल के लिए पायथन 2.0 से पायथन 3.3 के पैकेज प्रबंधक के साथ शिपिंग नहीं किया गया) ने समुदाय को नुकसान पहुंचाया। मैं नीचे दोनों का वर्णन करता हूं।

बकाया निराशा

यह समझना महत्वपूर्ण है कि जबकि अनुभवी उपयोगकर्ता इन कुंठाओं के आसपास काम करने में सक्षम हैं, वे लोगों के लिए पायथन के लिए महत्वपूर्ण बाधाएं हैं। वास्तव में, कठिनाई और सामान्य उपयोगकर्ता-मैत्री उनमें से कई को रोक सकती है।

PyPI वेबसाइट काउंटर-सहायक है

पैकेज प्रबंधक वाली प्रत्येक भाषा में संकुल को डाउनलोड करने और प्रकाशित करने के लिए समुदाय के लिए एक आधिकारिक (या अर्ध-आधिकारिक) भंडार होता है। पायथन में पायथन पैकेज इंडेक्स, PyPI है। https://pypi.python.org/pypi

आइए इसके पृष्ठों की तुलना रूबीगैम और एनपीएम (नोड पैकेज मैनेजर) से करें।

  1. पैकेज के लिए https://rubygems.org/gems/rails RubyGems पेजrails
  2. पैकेज के लिए https://www.npmjs.org/package/express Npm पेजexpress
  3. पैकेज के लिए https://pypi.python.org/pypi/simplejson/ PyPI पेजsimplejson

आप रूबीगैम और एनपीएम पृष्ठों को देखेंगे, दोनों पैकेज के एक-पंक्ति विवरण के साथ शुरू होते हैं, फिर बड़े दोस्ताना निर्देश इसे कैसे स्थापित करें।

इस बीच, किसी भी असहाय पायथन उपयोगकर्ता के लिए शोक करो, जो भोलेपन से PyPI को आकर्षित करता है। पर https://pypi.python.org/pypi/simplejson/ , वे इस तरह का कोई मददगार निर्देश मिलेंगे। हालांकि, एक बड़ा हरा 'डाउनलोड' लिंक है। इसका पालन करना अनुचित नहीं है। अहा, वे क्लिक करें! उनका ब्राउज़र एक .tar.gzफ़ाइल डाउनलोड करता है। कई विंडोज उपयोगकर्ता इसे खोल भी नहीं सकते हैं, लेकिन यदि वे इसे जारी रखते हैं तो वे अंततः इसे निकाल सकते हैं, फिर चला सकते हैं setup.pyऔर अंततः Google की मदद से setup.py install। कुछ तो चाक छोड़ देंगे और पहिये को फिर से लगायेंगे ।।

बेशक, यह सब गलत है। सबसे आसानपैकेज को स्थापित करने तरीका पिप कमांड के साथ है। लेकिन PyPI ने भी Pip का उल्लेख नहीं किया। इसके बजाय, इसने उन्हें एक पुरातन और कठिन रास्ता दिखाया।

त्रुटि: vcvarsall.bat खोजने में असमर्थ

नेम्पी अजगर के सबसे लोकप्रिय पुस्तकालयों में से एक है। पिप के साथ इसे स्थापित करने का प्रयास करें, आपको यह गुप्त त्रुटि संदेश मिलता है:

त्रुटि: vcvarsall.bat खोजने में असमर्थ

स्टैक ओवरफ्लो पर सबसे लोकप्रिय प्रश्नों में से एक को ठीक करने की कोशिश कर रहा है: " त्रुटि: vcvarsall.bat खोजने में असमर्थ "

कुछ लोग सफल होते हैं।

तुलना के लिए, उसी स्थिति में, रूबी इस संदेश को प्रिंट करती है, जो बताती है कि क्या चल रहा है और इसे कैसे ठीक किया जाए:

निर्माण उपकरण शामिल करने या http://rubyinstaller.org/downloads से DevKit को डाउनलोड करने और http://github.com/oneclick/rubyinstaller/wiki/Development-it पर निर्देशों का पालन करने के लिए कृपया अपने PATH को अपडेट करें

प्रकाशन पैकेज कठिन है

रूबी और नोडेज के जहाज पूर्ण-विशेषताओं वाले पैकेज मैनेजर, जेम (2007 से) और एनपीएम (2011 के बाद से) के साथ जहाज हैं, और गीथहब के आसपास केंद्रित समुदायों का पोषण करते हैं। Npm प्रकाशन पैकेजों को उन्हें स्थापित करना जितना आसान बनाता है, उसमें पहले से ही 64k पैकेज होते हैं । RubyGems 72k संकुल को सूचीबद्ध करता है । आदरणीय पायथन पैकेज इंडेक्स केवल 41k को सूचीबद्ध करता है ।

इतिहास

इसकी " बैटरी " के चेहरे में उड़ान " आदर्श वाक्य भरना, पायथन ने 2014 तक पैकेज मैनेजर के बिना भेज दिया।

पिप तक, डी वास्तविक मानक एक आदेश था easy_install । यह बहुत ही अपर्याप्त था। संकुल को अनइंस्टॉल करने की कोई आज्ञा नहीं थी।

पिप एक बड़े पैमाने पर सुधार था। इसमें रूबी के जेम की अधिकांश विशेषताएं थीं। दुर्भाग्य से, पिप था - हाल ही में जब तक - विडंबना यह स्थापित करने के लिए मुश्किल है। वास्तव में, समस्या स्टैक ओवरफ्लो पर एक शीर्ष पायथन सवाल बनी हुई है: " मैं विंडोज पर पाइप कैसे स्थापित करूं? "


3
रुचि रखने वाले किसी भी व्यक्ति के लिए, पीईपी 439 पाइप स्थापित करने की प्रक्रिया को कारगर बनाने का एक तरीका है, हालांकि मुझे लगता है कि यह पीईपी एक व्यापक रणनीति का हिस्सा है जिसे देखा जा रहा है। यह भी देखें चर्चा यहाँ
कार्टूयो जूल

3
@ कर्टू यह बहुत अच्छी खबर है! अजगर एक पैकेज मैनेजर का हकदार है, मुझे उम्मीद है कि देवता ऐसा कर सकते हैं।
कर्नल पैनिक

बिल्कुल, लंबे समय से अतिदेय। मुझे निश्चित रूप से उम्मीद है कि यह इसे कम से कम पायथन 3.4 में बनाता है। दुर्भाग्य से मुझे बहुत संदेह है कि यह 2.x पर वापस पोर्ट किया जाएगा, लेकिन सुरंग के अंत में कम से कम प्रकाश है। चलो बस आशा करते हैं कि यह एक आने वाला अजगर नहीं है ... (^_^)
कार्ट्रो जू

6
पायथन की रक्षा में, रूबी और नोड जैसी नई भाषाएं भाग्यशाली थीं जो पिछली भाषाओं की गलतियों का निरीक्षण करने और उनसे बचने में सक्षम थीं। उस ने कहा, मैं वास्तव में अजगर पर पैकेज प्रबंधन को अधिक प्यार और देखभाल प्राप्त करना चाहता हूं, इसलिए मुझे @Cartroo द्वारा इंगित किए गए PEP 439 को देखकर खुशी हुई।
डेनिस

मैं सहमत हूं कि रूबी के पैकेज प्रबंधन मेरे (अंत उपयोगकर्ता) दृष्टिकोण से एक अद्भुत बात है .. gem install Xबस सभी प्लेटफार्मों पर काम करना लगता है। तो उन्होंने इसे उन रत्नों के लिए कैसे प्रबंधित किया जिनके लिए विंडोज पर सी कोड संकलन की आवश्यकता है?
बीएसए

64

पायथन पैकेज इंडेक्स (PyPI) मानक प्रतीत होता है:

  • पैकेज स्थापित करने के लिए : pip install MyProject
  • पैकेज अपडेट करने के लिएpip install --upgrade MyProject
  • एक पैकेज के एक संस्करण को ठीक करने के लिएpip install MyProject==1.0

आप निम्नानुसार पैकेज प्रबंधक स्थापित कर सकते हैं:

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip

संदर्भ:


3
यह आधुनिक उत्तर है।
ग्रिंगो सुवे

6
मैंने 20 मिनट तक इंटरनेट पर खोज की और यह जवाब कहीं नहीं था। बहुत बहुत धन्यवाद। इसके अलावा, मुझे गंभीर संदेह है कि अजगर का उपयोग करने के बारे में अगर प्रलेखन यह खराब है ... यह पायथन मुख्य पृष्ठ पर होना चाहिए या Google या किसी चीज़
क्रिस जे

63

और बस एक कंट्रास्ट प्रदान करने के लिए, वहाँ भी पाइप है


2
धन्यवाद! अजगर मॉड्यूल प्रलेखन पृष्ठ को स्थापित करने पर पाइप का उल्लेख क्यों नहीं किया जाता है?
टॉमी चेंग

ध्यान दें कि पाइप अंडे का समर्थन नहीं करता है, यह केवल स्रोत पैकेज स्थापित करता है। सामान्यतया, पाइप कई चीजों को easy_install की तुलना में बहुत बेहतर करता है, लेकिन easy_install को अधिकांश यूनिक्स पर डिफ़ॉल्ट रूप से स्थापित किए जाने की संभावना है, पाइप नहीं है।
जेफरी हैरिस

8
@ टॉमी राइट! यदि पायथन देवों को उपयोगकर्ता अनुभव के बारे में परवाह है, तो वे एक पैकेज प्रबंधक (जैसे कि पाइप) के साथ पायथन को शिप करेंगे। मणि के साथ रूबी जहाज, और Npmj के साथ Npmjs। stackoverflow.com/a/13445719/284795
कर्नल पैनिक

21

रूबी और पर्ल डेवलपर और सीखने-सिखाने वाले लड़के के रूप में, मैंने RubyGems या CPAN के समकक्ष होने के लिए easy_install या pip नहीं पाया है।

मैं अपने विकास प्रणालियों को मॉड्यूल के नवीनतम संस्करणों को चलाने के लिए रखता हूं क्योंकि डेवलपर्स उन्हें अपडेट करते हैं, और मेरे उत्पादन प्रणालियों को सेट संस्करणों पर फ्रीज करते हैं। रूबीजीम्स और सीपीएएन दोनों ही आसान है कि जो उपलब्ध है, उसे सूचीबद्ध करके मॉड्यूल ढूंढना आसान है, फिर इंस्टॉल करें और बाद में उन्हें व्यक्तिगत रूप से या बल्क में अपडेट करें।

easy_install और pip एक मॉड्यूल को स्थापित करना आसान बनाता है ONCE मैंने इसे एक ब्राउज़र खोज के माध्यम से स्थित किया है या इसके बारे में कुछ अन्य माध्यमों से सीखा है, लेकिन वे मुझे यह नहीं बताएंगे कि क्या उपलब्ध है। मैं अपडेट किए जाने वाले मॉड्यूल को स्पष्ट रूप से नाम दे सकता हूं, लेकिन एप्लिकेशन मुझे यह नहीं बताएंगे कि क्या अद्यतन किया गया है और न ही वे बल्क में सब कुछ अपडेट करेंगे यदि मैं चाहता हूं।

इसलिए, बुनियादी कार्यक्षमता पाइप और easy_install में है, लेकिन ऐसी सुविधाएँ गायब हैं जो मैं देखना चाहता हूं जो उन्हें मित्रतापूर्ण और उपयोग करने में आसान और CPAN और RubyGems के साथ सम्‍मिलित करेगा।


यह उत्तर अब ठीक है और वास्तव में पुराना है।
ncoghlan


11

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

यह आपको बहुत कुछ करने में सक्षम बनाता है जो आप सिस्टम में बदलाव के बिना अजगर के साथ करना चाहते हैं। मेरा अगला पसंदीदा समाधान pip + virtualenv है, लेकिन आपको या तो virtualenv को अपने सिस्टम Python में स्थापित करना होगा (और आपका सिस्टम Python वह संस्करण नहीं हो सकता है जिसे आप चाहते हैं), या स्रोत से निर्माण करें । एनाकोंडा इस पूरी प्रक्रिया को एक बटन पर क्लिक करने के साथ-साथ अन्य सुविधाओं का एक गुच्छा जोड़ देता है।


7

1
यदि आप उस पृष्ठ पर सभी को डाउनवोट करना चाहते हैं जिसने कहा है easy_install, तो कृपया पहले तारीखों की जांच करें। यह लगभग 7 साल पहले दिया गया था जब वैध सलाह थी । मुझे नहीं लगता कि हमारे उत्तर देने वाले नियमित रूप से इसे अपडेट करने के लिए फिर से जा रहे हैं, इसलिए डाउनवोटिंग मूर्खतापूर्ण है।
कर्क स्ट्रैसर


5

मैं या तो अन्य जवाबों में उल्लेख किए गए MacPorts या Homebrew का उल्लेख नहीं करता , लेकिन जब से मैं उन्हें संबंधित प्रश्नों के लिए स्टैक ओवरफ्लो पर कहीं और उल्लेख करता हूं, तो मैं अपने खुद के US $ 0.02 जोड़ूंगा कि कई लोग MacPorts पर विचार करने लगते हैं को केवल पैकेज नहीं सामान्य रूप से पैकेज के लिए प्रबंधक (आज के अनुसार वे 16311 पैकेज / पोर्ट, 2931 "पायथन" से मेल खाते हैं, यद्यपि केवल मैक के लिए), लेकिन पायथन पैकेज / मॉड्यूल के लिए एक सभ्य (शायद बेहतर) पैकेज मैनेजर के रूप में:

सवाल

"... मैक अजगर डेवलपर्स अपने मॉड्यूल का प्रबंधन करने के लिए किस पद्धति का उपयोग करते हैं?"

जवाब

SciPy

"मैक (लिनक्स के विपरीत) एक पैकेज मैनेजर के साथ नहीं आते हैं, लेकिन कुछ लोकप्रिय पैकेज मैनेजर हैं जिन्हें आप इंस्टॉल कर सकते हैं। मैकबुक ..."

मैं अभी भी इस बात पर बहस कर रहा हूं कि खुद मैकपैर्ट्स का उपयोग करना है या नहीं, लेकिन फिलहाल मैं उस दिशा में झुक रहा हूं।


1
होमब्रे स्वयं कहती है: आप पायथन पैकेजों को स्थापित कर सकते हैं (पुराना आसान_स्थापना या) pip install <your_favorite_package>
सिमोन

4

Windows पर http://ch नाभि पर / फिर स्थापित करें

choco install python

अपडेटेड PATH के साथ एक नया cmd-window खोलें। अगला, करते हैं

choco install pip

उसके बाद आप कर सकते हैं

pip install pyside
pip install ipython
...

मैं थॉमस ब्रैट के जवाब के लिए एक टिप्पणी के रूप में इसका जवाब देना चाहता था, लेकिन मेरे पास पर्याप्त प्रतिष्ठा नहीं है ...
हंस 15

3

चूंकि किसी ने भी यहां पिपेनव का उल्लेख नहीं किया है, मैं अपने विचारों का वर्णन करना चाहूंगा कि क्यों सभी को इसका इस्तेमाल अजगर पैकेज के प्रबंधन के लिए करना चाहिए।

@ColonelPanic उल्लेख किया है वहाँ के साथ कई मुद्दे हैं अजगर पैकेज सूचकांक और साथ पिप और virtualenv भी।

पिपेनव पाइप के साथ अधिकांश मुद्दों को हल करता है और अतिरिक्त सुविधाएँ भी प्रदान करता है।

पिपेनव सुविधाएँ

पिपेनव को पाइप और वर्चुनेल को बदलने का इरादा है, जिसका अर्थ है कि पिपेनव हर परियोजना के लिए स्वचालित रूप से एक अलग आभासी वातावरण बनाएगा, इस प्रकार विभिन्न परियोजनाओं के लिए अलग-अलग अजगर संस्करणों / पैकेज संस्करणों के बीच संघर्ष से बचना होगा।

  • वास्तव में निर्धारक बनाता है, जबकि आसानी से केवल वही निर्दिष्ट करता है जो आप चाहते हैं।
  • लॉक निर्भरता के लिए फ़ाइल हैश बनाता है और चेक करता है।
  • यदि पायनव उपलब्ध है, तो स्वचालित रूप से आवश्यक पायथन स्थापित करें।
  • स्वचालित रूप से एक Pipfile की तलाश करके, अपने प्रोजेक्ट को पुन: घर पर पाता है।
  • स्वचालित रूप से एक Pipfile उत्पन्न करता है, अगर कोई मौजूद नहीं है।
  • स्वचालित रूप से एक मानक स्थान में एक virtualenv बनाता है।
  • जब वे अनइंस्टॉल / इंस्टाल होते हैं, तो एक Pipfile में पैकेज को स्वचालित रूप से जोड़ता / हटाता है।
  • स्वचालित रूप से .env फ़ाइलों को लोड करता है, यदि वे मौजूद हैं।

यदि आप पहले अजगर परियोजनाओं पर काम कर चुके हैं, तो आपको यह महसूस होगा कि इन सुविधाओं से पैकेजों का प्रबंधन आसान हो जाएगा।

अन्य कमांड

  • checkसुरक्षा कमजोरियों की जाँच करता है और कहता है कि PEP 508 आवश्यकताओं को वर्तमान परिवेश द्वारा पूरा किया जा रहा है। ( जो मुझे लगता है कि इसके बाद एक महान विशेषता है - PyPi पर दुर्भावनापूर्ण पैकेज )
  • graph आपको आपके द्वारा स्थापित निर्भरता का एक निर्भरता ग्राफ दिखाएगा।

आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं - पिपेनव

स्थापना

आप यहां इंस्टॉलेशन डॉक्यूमेंट देख सकते हैं

पुनश्च: आप अजगर पैकेज के साथ काम पसंद हैं अनुरोध , आप कृपा पता चला है कि हो सकता है pipenv एक ही डेवलपर द्वारा है केनेथ रीट्ज



0

कविता वह है जो आप खोज रहे हैं। यह निर्भरता प्रबंधन, आभासी वातावरण, चलाने का ख्याल रखता है।

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