पाइप मेरे पैकेज का एक पुराना संस्करण क्यों स्थापित कर रहा है?


80

मैंने अभी अपने पैकेज का एक नया संस्करण PyPi (1.2.1.0-r4) में अपलोड किया है: मैं अंडे की फाइल डाउनलोड कर सकता हूं और इसे easy_install के साथ इंस्टॉल कर सकता हूं, और संस्करण सही तरीके से जांचता है। लेकिन जब मैं पाइप का उपयोग करके स्थापित करने का प्रयास करता हूं, तो इसके बजाय संस्करण 1.1.0.0 स्थापित करता है। यहां तक ​​कि अगर मैं स्पष्ट रूप से संस्करण को पाइप करने के लिए निर्दिष्ट करता pip install -Iv tome==1.2.1.0-r4हूं, तो मुझे यह संदेश मिलता है: Requested tome==1.2.1.0-r4, but installing version 1.1.0.0लेकिन मुझे समझ नहीं आता कि क्यों।

मैंने दोगुना चेक किया parse_versionऔर पुष्टि की कि 1.2.1 पर संस्करण स्ट्रिंग 1.1.0 से अधिक है जैसा कि दिखाया गया है:

>>> from pkg_resources import parse_version as pv
>>> pv('1.1.0.0') < pv('1.2.1.0-r4')
True
>>>

तो किसी भी विचार क्यों यह बजाय 1.1.0 स्थापित करने के लिए चुन रहा है?


पुन: पेश नहीं कर सका। pip install -Iv tome==1.2.1.0-r4मेरे लिए स्थापित (संदेशों और pip freezeपैकेज दोनों के अनुसार) tome==1.2.1.0-r4
डेविड रॉबिन्सन

यह शायद अभी भी आपके रास्ते में है? इसके साथ कोशिश करें-U
वोल्फ

हम्म .. बिल्कुल दिलचस्प है। मैंने इसे पाइप से अनइंस्टॉल करने की कोशिश की है, मुझे लगता है कि मुझे कुछ और खोदना होगा और यह सुनिश्चित करना होगा कि यह सब खत्म हो गया है। जाँच के लिए धन्यवाद!
ब्रायनमर्न्स

पाइप में किसी तरह की बग दिखती है। मेरे पास एक समान मुद्दा है, लेकिन मैं django-tastypie के पुराने संस्करण को स्थापित नहीं कर सकता।
सिंपलीस्ज़

जवाबों:


95

यह एक अच्छा सवाल है। यह पता लगाने के लिए मुझे हमेशा के लिए ले लिया। यह वह उपाय है जो मेरे लिए काम करता है:

जाहिरा तौर पर, अगर pipपैकेज का स्थानीय संस्करण मिल सकता है , तो pipस्थानीय संस्करणों को दूरस्थ लोगों के लिए पसंद करेंगे। मैंने अपना कंप्यूटर इंटरनेट से भी डिस्कनेक्ट कर दिया और फिर से कोशिश की - जब pipअभी भी सफलतापूर्वक पैकेज स्थापित किया, और शिकायत भी नहीं की, तो स्रोत स्पष्ट रूप से स्थानीय था।

वास्तव में भ्रमित करने वाला हिस्सा, मेरे मामले में, यह था कि पीपीआईpip पर नए संस्करण मिले , उन्हें सूचना दी, और फिर आगे बढ़े और पुराने संस्करण को फिर से स्थापित किया ... arggh। इसके अलावा, यह मुझे नहीं बताया कि यह क्या कर रहा था, और क्यों।

तो मैंने इस समस्या को कैसे हल किया?

आप ध्वज pipका उपयोग करके वर्बोज़ आउटपुट दे सकते हैं -v... लेकिन एक पर्याप्त नहीं है। मैंने आरटीएफएम-एड की मदद ली है, जिसमें कहा गया है कि -vअधिक क्रिया आउटपुट के लिए आप कई बार, 3x तक कर सकते हैं । तो मैंने किया:

pip install -vvv <my_package>

फिर मैंने आउटपुट के माध्यम से देखा। एक लाइन ने मेरी आँख पकड़ ली:

स्रोत / tmp / pip-build-root / में संस्करण 0.0.11 है, जो आवश्यकता को संतुष्ट करता है <my_package>

मैंने उस निर्देशिका को हटा दिया, जिसके बाद pippypi से नवीनतम संस्करण स्थापित किया।


ऐसा लगता है कि अभी तक इसे ठीक नहीं किया गया है।
एले

1
@ Ale110 यह तय किया गया है - विवरण के लिए मेरा जवाब देखें।
पायोत्र डोब्रोगोस्ट

5
FYI करें आप उपयोग कर सकते हैं -vvvके बजाय -v -v -v
22

3
आप --no-cache-dirफ़ाइल को नीचे हटाने और हटाने के बजाय झंडे का उपयोग कर सकते हैं /tmp/
एतानाब्रोक्स 14

41

पैकेज को फिर से डाउनलोड करने के लिए मजबूर करने की कोशिश करें:

pip install --no-cache-dir --upgrade <package>

1
इसने मेरे लिए काम किया है। अंत में v0.2.1 पर स्थापित फोटोआउट का v0.4 मिला। पिप v0.4 टार डाउनलोड कर रहा था, लेकिन फिर यह सिर्फ v0.2.1 को स्थापित (या रखेगा)। Theno-cache-dir और --upgrade झंडे ने आखिरकार ऐसा किया! धन्यवाद
scibuff

4
यह यहाँ सही उत्तर है। पिप डिफ़ॉल्ट रूप से 600 सेकंड के लिए प्रासंगिक Pypi पृष्ठ का कैश रखता है। यहां तक ​​कि अगर आप स्थानीय रूप से कैश्ड पैकेज को हटाते हैं, तो भी आपको नए पेज को सभी नए संस्करण लिंक के साथ पाइप लाने के लिए 10 मिनट इंतजार करना होगा।
ब्रेथबॉर्न

1
यह बहुत तार्किक उत्तर की तरह लगता है। हालाँकि, पाइप अभी भी स्थापित वही पुराना संस्करण है, भले ही मैं जिस संस्करण के माध्यम से देख रहा हूं pip searchवह नया है।
मावामार्टन

1
अगर यह virtualenv के साथ कुछ है जाँच की कोशिश करो। आह अजगर संस्करण।
इकाचस

25

मार्कस स्मिथ के लिए धन्यवाद , जो पाइप के मेनटेनर के रूप में अद्भुत काम करते हैं, यह पाइप के संस्करण 1.4 में तय किया गया था जो 17-07-23 को जारी किया गया था।

इस संस्करण के लिए चैंज से प्रासंगिक जानकारी

कई मुद्दों (# 413, # 709, # 634, # 602, और # 939) को साफ किया और निर्माण निर्देशिकाओं का पुन: उपयोग न करने से संबंधित। (पुल # ​​865, # 948)


5
इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। इस तरह से अपग्रेड पाइप:pip install -U pip
एमिल स्टेंस्ट्रोम

2
यह फिक्स अभी भी एक कैश्ड संस्करण का उपयोग करके चुपचाप पाइप को संबोधित नहीं करता है, जिसे Iacchus के उत्तर का उपयोग करके हल किया जा सकता है
Burrito

1
नहीं, यह तय नहीं लगता है। मैं अभी उसी समस्या में चल रहा हूँ।
Regis May

17

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


2
सूचना के लिए धन्यवाद। कोई भी विचार जहां मुझे बिल्ड निर्देशिका की तलाश करनी चाहिए? मैंने इसे Python \ Lib \ साइट-संकुल से हटाने की कोशिश की, लेकिन परिणाम समान थे। मैं उस स्थान से कमांड निष्पादित नहीं कर रहा हूं जहां पैकेज मौजूद है या कुछ भी।
1

@ sh1ftst0rm मैं linux के तहत virtualenv का उपयोग कर रहा हूं और django-tastypie के लिए यह था कि: "$ VIRTUAL_ENV / build / django-tastypie"। पायथन निर्देशिका के शीर्ष की जाँच करने का प्रयास करें या अपने सिस्टम में खोज का उपयोग करें। इसके अलावा आप "पिप इंस्टाल-बी <पथ टू कस्टम बिल्ड डिर>" का उपयोग करने का प्रयास कर सकते हैं।
सिंपलीस्ज़

1
यह मेरी समस्या प्रतीत नहीं होती है, मैंने दूर-दूर तक खोज की है और अपने सिस्टम पर इसके लिए पैकेज या बिल्ड डायरेक्टरी का कोई भी पता नहीं लगा सकता है। यह पाइप में कुछ अन्य बग होना चाहिए = (अच्छा टिप वैसे भी, मुझे यकीन है कि यह बहुत सारे लोगों के लिए ठीक होगा।
ब्रायनमर्न्स

9

यदि आप एक ऐसे pipसंस्करण का उपयोग कर रहे हैं जो कुछ वितरण पैकेज (उदाहरण। Ubuntu पायथन-पाइप) के साथ आता है, तो आपको एक नया pipसंस्करण स्थापित करने की आवश्यकता हो सकती है :

pipनवीनतम संस्करण में अपडेट करें:

sudo pip install -U pip

"Virtualenv" के मामले में, "sudo" को छोड़ें:

pip install -U pip

यदि आपके शेल में अपडेट के -bash: /usr/bin/pip: No such file or directoryबाद कुछ रिपोर्ट होती है, तो निम्नलिखित आदेश की आवश्यकता हो सकती है pip:

hash -d pip

अब हमेशा की तरह अपने पैकेज को स्थापित करें:

pip install -U foo

या

pip install foo==package.version.here


6

पिका 0.9.5 से 0.9.8 को अद्यतन करने के लिए एक ही समस्या है। एकमात्र कार्य तरीका टारबॉल से स्थापित करना था pip install https://pypi.python.org/packages/source/p/pika/pika-0.9.8.tar.gz:।


2
+1 धन्यवाद, इसने मुझे कुछ महत्वपूर्ण में बांधा: पाइप स्रोत वितरण पर निर्भर करता है: अपने नवीनतम संस्करण के साथ, मैं एक स्रोत को अपलोड करना चाहता था, इसलिए जब मैंने स्थापित करने का प्रयास किया, तो उसे केवल पिछले संस्करण मिलेगा। यह मेरी मूल समस्या को हल नहीं करता है, लेकिन यह जानना उपयोगी है।
ब्रायनमर्न्स

1

मेरे मामले के लिए मुझे .pipअपने होम डायरेक्टरी में फ़ोल्डर को हटाना पड़ा और फिर मैं कई लाइब्रेरी के बाद के संस्करणों को प्राप्त करने में सक्षम हुआ। ध्यान दें कि यह लिनक्स पर था।

pip --version
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
virtualenv --version
15.1.0

0

मैंने पाया है कि यदि आप माइक्रोवेरियन का उपयोग करते हैं, तो पाइप उन्हें पहचानता नहीं है। उदाहरण के लिए, हम उन्नयन के लिए संस्करण 1.9.9.1 प्राप्त नहीं कर सके।


2
शायद क्योंकि '1.9.9.1' नहीं SemVer संगत है, को देखने के semver.org
tector

0

मेरे मामले में इस्तेमाल किया अजगर संस्करण (3.4) Django 2.1 निर्भरता आवश्यकताओं (अजगर> = 3.5) को संतुष्ट नहीं किया।


0

मेरे मामले में मैं Artifactory से एक .tar.gz पैकेज स्थापित कर रहा हूँ जिसे मैं बहुत अद्यतन करता हूँ। मेरी कैश्ड पायथन फ़ाइलों को अधिलेखित करने और हमेशा नवीनतम I को चलाने / स्थापित करने के लिए:

pip install --no-cache-dir --force-reinstall <path/to/tar.gz>

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


0

मेरे मामले में, किसी को Python2 के साथ एक पैकेज के नवीनतम संस्करण को प्रकाशित किया था, इसलिए प्रयास कर करने के लिए pip3 installयह एक पुराने संस्करण है कि पकड़ा था python3 साथ बनाया गया।

यह डिबग करते समय जांच करने के लिए आसान चीजें:

  • यदि pip installसंस्करण खोजने में सक्षम नहीं होने का दावा करता है, तो देखें कि क्या pip searchवह देख सकता है।
  • Pypi रेपो पर "डाउनलोड फाइल्स" सेक्शन पर एक नज़र डालें - फाइलनाम यह सुझाव दे सकते हैं कि क्या गलत है (मेरे मामले में मैंने -py2-वहां दिन के रूप में स्पष्ट देखा )।
  • जैसा कि दूसरों द्वारा सुझाया गया है, pip install --no-cache-dirयदि आपके पास पहले से ही स्थानीय रूप से आपका उत्तर है, तो इंटरनेट से पूछने के लिए परेशान न हों।

0

मैंने PyCharm में Git टैब के नीचे बिना पढ़ी हुई फाइलें छिपाई हुई थीं, जो कि तब pip install .भी स्थापित की जा रही थीं , जब मैंने फाइलों को कहीं और नहीं देखा था।

इसे पाने के लिए एक लंबा समय लिया, इस उम्मीद में कि यह किसी और की मदद करेगा।


0

बस उस स्थिति में जब किसी और को टॉर्चर (या शायद किसी अन्य torchलाइब्रेरी को अपग्रेड करने) में कोई परेशानी हो :

हालाँकि https://pypi.org/project/torchtext/ में कहा गया है कि आपको चलाने के लिए pip install torchtextमुझे उर्फ torchको निर्दिष्ट करके इसे स्थापित करना होगा :--find-links-f

pip install torchtext===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

मुझे इस बात से चिढ़ थी कि PyCharm ने मुझे नए संस्करण की ओर इशारा किया, लेकिन इसे अपग्रेड करने का प्रयास करते समय इसे नहीं खोजा जा सका। मुझे लगता है कि PyCharm नए संस्करणों को हाजिर करने के लिए अपने स्वयं के तंत्र का उपयोग करता है। फिर, जब pipहुड के नीचे आह्वान किया, तो यह --find-linksविकल्प के बिना नया संस्करण नहीं मिला ।

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