"त्रुटि: विकल्प - एकल-बाहरी-प्रबंधित-पहचाना नहीं गया" क्या इंगित करता है?


102

मुझे लगता है error: option --single-version-externally-managed not recognizedजब pip installसंस्करण संकुल (सहित PyObjCऔर astropy) आईएनजी अचानक त्रुटि शुरू कर दिया है । मैंने इस त्रुटि को पहले कभी नहीं देखा है, लेकिन अब यह ट्रैविस-सीआई बिल्ड पर भी दिखाई दे रहा है जिसके लिए कुछ भी नहीं बदला है।

क्या यह त्रुटि आउट ऑफ डेट वितरित है? या कुछ गलत तरीके से निर्दिष्ट विकल्प में setup.py? या कुछ और पूरी तरह से?

जवाबों:


84

नई अपडेट:

का नवीनतम संस्करण स्थापित करें setuptools। यदि आप अभी भी त्रुटि प्राप्त करते हैं, तो भी स्थापित करें wheel

pip install -U setuptools
pip install -U wheel

मूल उत्तर / अधिक विवरण:

--single-version-externally-managed एक विकल्प है जिसे पायथन पैकेज के लिए उपयोग किया जाता है, जो सेटपूल के मॉड्यूल को एक पायथन पैकेज बनाने के लिए निर्देश देता है जिसे यम या एप की तरह आसानी से होस्ट के पैकेज मैनेजर द्वारा प्रबंधित किया जा सकता है।

यदि आप यह संदेश देख रहे हैं, तो आपके पास सेटपूल या पाइथन का पुराना संस्करण हो सकता है। डिस्ट्रीब्यूट का उपयोग करने का प्रयास करें, जो सेटप्टूल का एक नया संस्करण है और पीछे की ओर संगत है। ये पैकेज उम्मीद कर सकते हैं कि आपके पास यह पहले से है।

https://pypi.python.org/pypi/distribute

संपादित करें: इस बिंदु पर, वितरण को मुख्य setuptoolsपरियोजना में मिला दिया गया है । बस के नवीनतम संस्करण को स्थापित करें setuptools। जैसा कि @wynemo ने संकेत दिया है, आप --eggइसके बजाय विकल्प का उपयोग करना चाह सकते हैं , क्योंकि यह उन लोगों के लिए अधिक उपयुक्त है जो मैन्युअल इंस्टॉलेशन कर रहे हैं जहां आप वितरण के लिए सिस्टम पैकेज बनाने का इरादा नहीं कर रहे हैं।


1
क्या आप उस संस्करण को जोड़ सकते हैं जो दिखाया गया है? मैं setuptools 0.6 का उपयोग कर रहा हूं और पाइप एक नए संस्करण के बारे में नहीं जानता है। distributeसही लगता है, लेकिन मैं इसे आयात नहीं कर सकता ...
keflavich

तुम नहीं import distribute। डिस्ट्रिब्यूट एक ड्रॉप-इन प्रतिस्थापन है और इसमें समान मॉड्यूल नाम है। import setuptoolsइसके लिए भी आवश्यक है।
केलकेटेक

फिर, यह सुनिश्चित करने के लिए कि सेटटॉपल्स वितरण को ओवरराइड नहीं कर रहा है, अगर आपने दोनों को स्थापित किया है। आपको पाइप के साथ वितरण स्थापित करना चाहिए, और फिर सेटप्टूल को हटा दें। मुझे लगता है कि काम करना चाहिए।
केल्टेक मार्क

17
इसे जोड़ा जाना चाहिए: अब वितरण का उपयोग न करें। डिस्ट्रीब्यूटूल प्रोजेक्ट में डिस्ट्रिब्यूट को वापस मर्ज कर दिया गया है, इसलिए अब setuptoolsउन सभी पर शासन करने के लिए एक ही है।
इगुआनाटुत

1
@ जोंटेक्स, यह जवाब एक साल पहले बनाया गया था, जब वितरण और सेटप्टूल अभी तक विलय नहीं हुए थे (या यदि उनके पास था, तो मैंने इसके बारे में नहीं सुना होगा)। मैंने इसे अब अपडेट कर दिया है।
केलकेटेक

136

--eggविकल्प जोड़ें

pip install --egg SCons

मैं pipसंस्करण 1.4.1 का उपयोग करता हूं


10
यही एकमात्र समाधान था जो वास्तव में मदद करता था। हाल ही में पाइप और सेटपूल पहले से ही स्थापित थे, फिर भी मुझे इस त्रुटि से नफरत है।
माइकल

मुझे पाइनेव से यह समस्या थी और इसने इसे ठीक कर दिया।
ग्लूकोन

13
क्या कोई इस बारे में विस्तार से बता सकता है कि इस विकल्प का क्या मतलब है और यह काम क्यों करता है?
कविंग-चीउ

4
जबकि यह मेरे लिए काम करता है, मुझे भी त्रुटि मिली: "DEPRECATION: - सभी को हटा दिया गया है और भविष्य में इसे हटा दिया जाएगा। यह ध्वज पारस्परिक रूप से पाइप के बड़े हिस्सों के साथ अनन्य है, और वास्तव में इसका उपयोग करने से पाइप की क्षमता का प्रबंधन करने में अमान्य है। स्थापना प्रक्रिया। "
natersoz

2
no such option: --eggपाइप में 18.1
gdw2

45

स्थापना wheelने हाल ही में इस समस्या का समाधान pipकिया (मैंने 8.1.2 का उपयोग किया):

pip install wheel

आप चाहें तो संपादित करने के लिए वापस आ सकते हैं, कोई समस्या नहीं। यदि आप इसका सटीक संस्करण जानते हैं pipऔर wheelयह कहाँ तय किया गया था, तो इसे फिर से तोड़े जाने के मामले में इसका उल्लेख करने के लायक हो सकता है। और यह भी, उत्तर यह नहीं समझाता कि क्या चल रहा है।
अनातोली टेकटोनिक

@Sparrowt के इस प्लस जवाब ने मेरा मुद्दा तय किया
डेविड पॉक्सन

7

इस तरह से सेट अपटूल को अपग्रेड करने की कोशिश करें:

pip install --upgrade setuptools


5

मुझे यह समस्या हो रही थी। यह पता चला कि यह मेरे पाइप कैश पर फ़ाइल अनुमतियों के साथ एक समस्या थी।

यदि आप अपने पाइप आउटपुट की शुरुआत में एक संदेश देखते हैं जैसे

The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

आपको भी यही समस्या हो सकती है। आप या तो यह सुनिश्चित करके इसे हल कर सकते हैं कि आपके पास अपने पाइप कैश (जैसे कुछ chown -R $(whoami) /home/ubuntu/.cache/pip) पर उचित फ़ाइल अनुमतियाँ हैं या, यदि आप यूनिक्स पर हैं, तो आप अपने द्वारा किए XDG_CACHE_HOMEगए कुछ फ़ोल्डर में एनवी वर्जन के साथ पाइप कैश स्थान सेट कर सकते हैं।


हैरानी की बात है, यह मेरे लिए भी काम किया (यदि आप sudoपैकेज को स्थापित करने के लिए उपयोग करते हैं, तो -Hझंडा जोड़ना सुनिश्चित करें )! मैं वास्तव में यह नहीं देखता कि कैश और कमांड विकल्प त्रुटि के बीच क्या संबंध है, लेकिन कभी भी मन नहीं।
डेलगन

1

मैंने उपरोक्त समाधानों की कोशिश की। हालाँकि, मैं केवल तब तक समस्या का समाधान कर सकता हूँ जब तक मैं नहीं करूँगा:

sudo pip3 install -U pip (अजगर 3 के लिए)


0

मुझे अपनी मैकबुक पर भी यह समस्या है जब मैं एक अजगर पैकेज को अपग्रेड करने की कोशिश करता हूं। मैं ओएस एक्स में पाइप संस्करण की जांच करता हूं, यह बहुत पुराना है: 1.1। मैं 1.5.6 पाइप को अपग्रेड करने के लिए cmd का पालन करता हूं

easy_install -U pip

तब यह त्रुटि ठीक हो जाती है।

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