पायथन 3 के लिए पैकेज स्थापित करने के लिए पाइप या पिप 3?


121

मेरे पास OS X El Captain के साथ एक मैकबुक है। मुझे लगता है कि इस Python 2.7पर प्रीइंस्टॉल्ड आता है। हालाँकि, मैंने Python 3.5भी स्थापित किया । जब मैंने उपयोग करना शुरू किया Python 3, तो मैंने पढ़ा कि अगर मुझे एक पैकेज स्थापित करना है, तो मुझे टाइप करना चाहिए:

pip3 install some_package

वैसे भी, अब जब मैं उपयोग करता हूं

pip install some_package

मैं some_packageस्थापित हो जाता हूं Python 3। मेरा मतलब है कि मैं इसे आयात कर सकता हूं और समस्याओं के बिना इसका उपयोग कर सकता हूं। इसके अलावा, जब मैं सिर्फ टाइप pip3में Terminal, मैं उपयोग के बारे में इस संदेश मिला:

Usage:   
  pip <command> [options]

जब मैं सिर्फ टाइप करता हूं तो मुझे यही संदेश मिलता है pip

क्या इसका मतलब यह है कि प्रीवियस संस्करणों में, चीजें अलग थीं, और अब pipऔर pip3इसका उपयोग पारस्परिक रूप से किया जा सकता है? यदि ऐसा है, और तर्क के लिए, मैं Python 2इसके बजाय पैकेज कैसे स्थापित कर सकता हूं Python 3?

जवाबों:


74

आपका pipएक ही निष्पादन योग्य फ़ाइल पथ के साथ एक नरम लिंक है pip3। आप अपने pipऔर pip3वास्तविक रास्तों की जाँच के लिए नीचे दिए गए आदेशों का उपयोग कर सकते हैं:

$ ls -l `which pip`
$ ls -l `which pip3`

अधिक विवरण जानने के लिए आप नीचे दिए गए आदेशों का भी उपयोग कर सकते हैं:

$ pip show pip
$ pip3 show pip

जब हम अजगर के विभिन्न संस्करणों को स्थापित करते हैं, तो हम ऐसे नरम लिंक बना सकते हैं

  • कुछ संस्करण के लिए डिफ़ॉल्ट पाइप सेट करें।
  • विभिन्न संस्करणों के लिए अलग-अलग लिंक बनाएं।

इसके साथ ही स्थिति है python, python2,python3

नीचे दी गई अधिक जानकारी यदि आप रुचि रखते हैं कि यह विभिन्न मामलों में कैसे होता है:


1
मुझे लगता है कि यह गलत है। मेरा पाइप 3 भी अपने आप को अपने आउटपुट आउटपुट में सिर्फ पाइप कहता है, फिर भी, सादे पाइप मेरे सिस्टम पर पायथन 2 पैकेज स्थापित करता है। मुझे लगता है कि stackoverflow.com/a/40832677/188108 सही है, कम से कम यह मेरी टिप्पणियों से सहमत है।
टॉरस्टेन ब्रॉन्गर

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

1
मुझे शक है कि। मेरे पास कोई मैक नहीं है, लेकिन उबंटू के स्वादों पर मैंने परीक्षण किया है, पाइप वेरिएंट सीलिंक नहीं हैं। इसके बजाय, वे छोटे पायथन स्क्रिप्ट हैं जो केवल शेबंग लाइन में भिन्न हैं।
टॉर्स्टन ब्रॉन्जर

हाँ, इसका मतलब यह है कि यह पर्यावरण पर बदलता है और जिस तरह से आप अजगर स्थापित करते हैं (काढ़ा, एपेट, पाइनव, मैन्युअल रूप से संकलित करते हैं, आदि) और प्रश्नकर्ता की स्थिति में यह इसलिए है क्योंकि वे नरम लिंक हैं, और हम इसका उपयोग करते हैं ls -lऔर pip showकारण को सत्यापित करने के लिए। और निश्चित रूप से, यह उत्तर उसके प्रश्न का उत्तर देने के लिए है।
सीएसजे

मुझे नहीं लगता कि प्रश्नकर्ता के कंप्यूटर पर कोई सहानुभूति थी। मुझे ऐसा कोई संदर्भ नहीं मिला, जो कभी इस तरह से काम करता हो / काम करता हो।
टॉर्स्टन ब्रोंगर

26

यदि आपके पास अजगर 2.x और फिर python3 स्थापित है, तो आपका पाइप pip3 की ओर इशारा करेगा। आप इसे टाइप करके सत्यापित कर सकते हैं जो कि pip --versionजैसा होगा pip3 --version

आपके सिस्टम पर अब आपके पास पाइप, pip2 और pip3 हैं

यदि आप चाहते हैं तो आप pip3 के बजाय pip2 को इंगित करने के लिए पाइप को बदल सकते हैं।


1
आप कैसे बदल सकते हैं
१c

3
@ahnbizcad सबसे आसान तरीका है एक उपनाम को इस तरह परिभाषित करना: उर्फ ​​पाइप = "पिप 3"
अपादाना

2
मैंने ऐसा किया था, लेकिन मेरा pip3 v9 था जब पाइप v10 था, तो मैंने टाइप किया pip3 install --upgrade pipऔर इसने v10 को बनाया
केविन डानिकोव्स्की

2
यह उत्तर गलत है। पाइप pip3 को इंगित नहीं करेगा। पाईप पायथन 2 पैकेज स्थापित करेगा, और पाइप 3 पायथन 3 पैकेज स्थापित करेगा। ल्यूबुन्टू 18.10 पर परीक्षण किया गया।
टॉरस्ट ब्रोंगर

@TorstenBronger आपके पर्यावरण में अजगर की स्थापना का क्रम क्या था?
अपादान

14

जब आप इंस्टॉल करते हैं python3, तो इंस्टॉल pip3हो जाता है। और यदि आपके पास एक और पायथन इंस्टॉलेशन (जैसे python2.7) नहीं है, तो एक लिंक बनाया जाता है जो इंगित pipकरता है pip3

तो pipएक लिंक हैpip3 अगर वहाँ स्थापित अजगर का कोई अन्य संस्करण है (अजगर 3 के अलावा)। pipआम तौर पर पहली स्थापना की ओर इशारा करता है।


7

यह एक मुश्किल विषय है। अंत में, यदि आप pipइसे लागू करते हैं तो यह pip2या तो आह्वान करेगा या फिर pip3इस पर निर्भर करेगा कि आपने अपना सिस्टम कैसे सेट किया।


6

चित्रण द्वारा:

pip --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

pip3 --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

python --version
  Python 3.7.3

which python
  /usr/bin/python

ls -l '/usr/bin/python'
  lrwxrwxrwx 1 root root 7 Mar 26 14:43 /usr/bin/python -> python3

which python3
  /usr/bin/python3

ls -l /usr/bin/python3
  lrwxrwxrwx 1 root root 9 Mar 26 14:43 /usr/bin/python3 -> python3.7

ls -l /usr/bin/python3.7
  -rwxr-xr-x 2 root root 14120 Mar 26 14:43 /usr/bin/python3.7

इस प्रकार, मेरी डिफ़ॉल्ट प्रणाली अजगर (पायथन 3.7.3) में मेरी pip है pip3


5

मुझे लगता है pip, pip2और pip3एक ही निष्पादन योग्य फ़ाइल पथ के लिए नरम लिंक नहीं हैं। मेरे लिनक्स टर्मिनल में इस आदेश और परिणामों पर ध्यान दें:

mrz@mrz-pc ~ $ ls -l `which pip`
-rwxr-xr-x 1 root root 292 Nov 10  2016 /usr/bin/pip
mrz@mrz-pc ~ $ ls -l `which pip2`
-rwxr-xr-x 1 root root 283 Nov 10  2016 /usr/bin/pip2
mrz@mrz-pc ~ $ ls -l `which pip3`
-rwxr-xr-x 1 root root 293 Nov 10  2016 /usr/bin/pip3
mrz@mrz-pc ~ $ pip -V
pip 9.0.1 from /home/mrz/.local/lib/python2.7/site-packages (python 2.7)
mrz@mrz-pc ~ $ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
mrz@mrz-pc ~ $ pip3 -V
pip 9.0.1 from /home/mrz/.local/lib/python3.5/site-packages (python 3.5)

जैसा कि आप देखते हैं कि वे विभिन्न रास्तों में मौजूद हैं।

pip3 हमेशा Python3 पर्यावरण पर ही काम करता है, क्योंकि pip2 Python2 के साथ करता है। जो भी पर्यावरण के संदर्भ में उपयुक्त है, पाइप चल रहा है। उदाहरण के लिए यदि आप पायथन 3 वेव में हैं, तो पाइप पायथन 3 वातावरण पर काम करेगा।


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

3

यदि आपने पायथन 2.7 स्थापित किया है, तो मुझे लगता है कि आप उपयोग कर सकते हैं pip2और pip2.7विशेष रूप से अजगर 2 के लिए पैकेज स्थापित कर सकते हैं , जैसे

pip2 install some_pacakge

या

pip2.7 install some_package

और आप विशेष रूप से पायथन 3 के लिए pacakges का उपयोग pip3या pip3.5स्थापित करने के लिए कर सकते हैं ।


1

मेरे विंडोज उदाहरण पर - और मैं अपने पर्यावरण को पूरी तरह से नहीं समझता - पिपल 3 का उपयोग करके कागले-क्ली पैकेज को स्थापित करने के लिए काम किया - जबकि पाइप नहीं था। मैं एक कोंडा वातावरण में काम कर रहा था और वातावरण भिन्न प्रतीत होते हैं।

(fastai) C: \ Users \ redact \ Downloads \ fast \ai \ deeplearning1 \ nbs> pip --version

सी से 9.0.1 पाइप: \ ProgramData \ Anaconda3 \ envs \ fastai \ lib \ साइट-संकुल (अजगर 3.6)

(fastai) C: \ Users \ redact \ download \ fast \ai \ deeplearning1 \ nbs> pip3-8 विपथन

पाइप 9.0.1 c से: \ users \ redact \ appdata \ local \ प्रोग्राम \ python \ python36 \ lib \ साइट-संकुल (अजगर 3.6)


0

Somepath / venv में एक सक्रिय Python 3.6 virtualenv को देखते हुए , निम्नलिखित उपनामों ने एक macOS Sierra पर विभिन्न मुद्दों को हल किया, जहां Apple के 2.7 पायथन की ओर इशारा करते हुए पाइप पर जोर दिया गया।

alias pip='python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

यह तब भी अच्छी तरह से काम नहीं किया था जब मुझे करना था sudo pipक्योंकि रूट उपयोगकर्ता को मेरे उपनाम या वर्चुअनव के बारे में कुछ भी पता नहीं है, इसलिए मुझे इसे संभालने के लिए एक अतिरिक्त उपनाम भी जोड़ना पड़ा। यह एक हैक है, लेकिन यह काम करता है, और मुझे पता है कि यह क्या करता है:

alias sudopip='sudo somepath/venv/bin/python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

पृष्ठभूमि:

pip3 शुरू करने के लिए मौजूद नहीं था ( कमांड नहीं मिला ) के साथ और which pipवापसी होगी /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip , एप्पल अजगर।

Python 3.6 को macports के माध्यम से स्थापित किया गया था।

3.6 virtualenv की सक्रियता के बाद मैं काम करना चाहता था, which python वापसी होगी somepath / venv / bin / अजगर

जैसे तैसे pip install सही काम करेंगे और मेरे वर्चुअन को हिट pip listकरेंगे , लेकिन पायथन 2.7 पैकेज से खिसक जाएंगे।

पायथन के लिए, यह शुरुआती-मित्रता के संदर्भ में मेरी उम्मीदों के नीचे बल्लेबाजी का तरीका है।

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