"पाइप स्थापित करें - संपादन योग्य।" "बनाम" अजगर सेटअप थिंकपैड विकसित होगा "


177

क्या कोई महत्वपूर्ण अंतर है

pip install -e /path/to/mypackage

और सेटटापूल संस्करण?

python /path/to/mypackage/setup.py develop

1
यह विकास मोड का वर्णन करने वाला एक अद्यतन लिंक प्रतीत होता है: setuptools.readthedocs.io/en/latest/…
PaulR

यदि आप स्थापना रद्द करने में रुचि रखते हैं (विकास / संपादन मोड में पैकेज) इस सवाल का प्रयास करें: stackoverflow.com/questions/17346619/…
चार्ली पार्कर

जवाबों:


130

setup.pyसीधे कॉल से बचने की कोशिश करें , यह ठीक से पाइप को नहीं बताएगा कि आपने अपना पैकेज स्थापित किया है।

के साथ pip install -e:

स्थानीय परियोजनाओं के लिए, "SomeProject.egg-info" निर्देशिका प्रोजेक्ट पथ के सापेक्ष बनाई गई है। यह सिर्फ उपयोग करने पर एक फायदा है setup.py develop, जो वर्तमान कार्यशील निर्देशिका के सापेक्ष सीधे "अंडा-जानकारी" बनाता है।

अधिक: डॉक्स

साथ ही सेटपूल के डॉक्स भी पढ़ें ।


क्या परिवर्तन को प्रभावी करने के लिए फाइल में बदलाव करने के बाद उपयोगकर्ता को 'अजगर सेटअप थिंकपैड sdist' चलाना होगा?
चर

हालाँकि अगर आपको 'set_trace' के साथ डीबग (setup.py फ़ाइल खुद) करने की आवश्यकता है, तो 'python setup.py विकसित' इसे संभव बनाता है
mirek

दूसरा URL टूट गया है।
bad_coder

दोनों मेरे लिए काम करते हैं।
सोबोलेवन

76

एक और अंतर: pip install -eपहिया का उपयोग करता है जबकि python setup.py develop
इसका उपयोग नहीं करता है।

के साथ install, आप उसी व्यवहार का उपयोग करके प्राप्त कर सकते हैं
pip install -e /path/to/package --no-use-wheel

पहियों पर अधिक जानकारी: अजगर पहियों


18
ध्यान दें कि, के अनुसार pip.pypa.io/en/stable/reference/pip_install , --no-use-wheelबहिष्कृत किया गया के पक्ष में--no-binary :all:
Nzbuu

क्या हम sdist का उपयोग करके उत्पादित पैकेज के लिए पाइप इंस्टाल कर सकते हैं?
चर

36

एक और अंतर यह है कि पक्ष हो सकता है pip install -eकि अगर अपनी परियोजना में निर्भरता है install_requiresमें setup.pyहै, तो pip install -e .निर्भरता पिप के साथ, स्थापित करता है, जबकि python setup.py developसाथ स्थापित कर सकते हैं easy_installजैसा कि ऊपर उल्लेख 'अंडे की जानकारी':, और समस्याओं फिर से हो सकती है। जब कस्टम git URL के साथ install-requiresउपयोग किया dependency_linksजाता है, संलग्न अंडे पहचानकर्ताओं के साथ, यह विशेष रूप से कष्टप्रद हो सकता है।


1
यह पूरी तरह से बताता है कि मेरा निजी पैकेज स्थापित होने में विफल क्यों रहा। यह मेरे devpi सर्वर पर नहीं pypi है। धन्यवाद।
ckot

जब आप कहते हैं कि पैकेज संपादन योग्य हो जाता है, तो क्या आपको लगता है कि पैकेज फ़ाइल में परिवर्तन करने के बाद उपयोगकर्ता को फिर से 'python setup.py sdist' चलाना होगा? या कमांड के ऊपर चलने की आवश्यकता नहीं है?
चर

जब आप के साथ एक स्थानीय पैकेज स्थापित करते हैं pip install -e ., तो यह अनिवार्य रूप से आपकी वर्किंग कॉपी को इंगित करने के लिए प्रासंगिक पायथन साइट-संकुल निर्देशिका में एक सिमलिंक बनाता है। चूंकि कोड परिवर्तन उस कार्यशील प्रतिलिपि में किए जाते हैं, यह "इंस्टॉल किए गए" संस्करण में तुरंत परिलक्षित होता है, इसलिए आपको जाते ही इंस्टॉलेशन कमांड को फिर से चलाने की आवश्यकता नहीं है। यह मुख्य रूप से एक भंडार में विकसित करने के लिए उपयोगी है जो एक संस्थापित पैकेज का प्रतिनिधित्व करता है, लेकिन उदाहरण के लिए केवल पूर्ण आयात के साथ मॉड्यूल के कुछ संग्रह लिखने के लिए भी उपयोगी हो सकता है, आदि
ely

0

फिर भी एक और अंतर: जब आप python setup.py developएक ऐसे संस्करण के लिए दौड़ते हैं , जो पूर्व-रिलीज़ माना जाता है (शायद इसलिए कि आप इसे किसी रिलीज़ से जाँच नहीं होने पर एक git क्लोन से चला रहे हैं), तो आप अपनी निर्भरता के पूर्व-रिलीज़ की स्थापना को सक्षम करेंगे । दूसरी ओर, यदि आप ये पूर्व-रिलीज़ चाहते हैं, तो आपको स्पष्ट रूप pip install --editableसे पास करना होगा --pre

( गलती से उपयोग किए गए पूर्व-रिलीज़ के साथ CI लॉग देखें और यहां एक निश्चित बिल्ड से तुलना करें ।)

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