2015-09-20 9 views
9

के बाद ImportError मैंने pip install <library-name> के साथ सफलतापूर्वक लाइब्रेरी स्थापित की है। लेकिन जब मैं इसे आयात करने का प्रयास करता हूं, तो पाइथन ImportError: No module named <library-name> उठाता है। मुझे यह त्रुटि क्यों मिलती है और मैं स्थापित लाइब्रेरी का उपयोग कैसे कर सकता हूं?सफल पाइप स्थापना

+0

@Ahsanul हक, यह एक हो रहा है पायथन में आम समस्या। मैं एक प्रश्न-उत्तर जोड़ी बनाने की कोशिश कर रहा हूं जिसे मैं टिप्पणियों में देख सकता हूं। यह भी देखें: http://stackoverflow.com/help/self-answer। यह प्रश्न इस लिंक में वर्णित प्रक्रिया द्वारा बनाया गया था। यही कारण है कि प्रश्न और उत्तर ठीक उसी समय पोस्ट किए गए थे। – cel

+0

यह जानकर अच्छा लगा, मेरा मतलब है कोई नुकसान –

उत्तर

36

टीएल; डीआर: अक्सर पाइथन दुभाषियों और पीआईपी संस्करणों के कई संस्करण मौजूद होते हैं। pip install <library-name> के बजाय python -m pip install <library-name> का उपयोग करके यह सुनिश्चित होगा कि लाइब्रेरी डिफ़ॉल्ट पायथन दुभाषिया में स्थापित हो।

कृपया यह भी ध्यान दें: मेरे व्यक्तिगत अनुभव से मैं सिस्टम के डिफ़ॉल्ट पायथन दुभाषिया में पैकेज स्थापित करने के लिए sudo pip install का उपयोग करने के खिलाफ सलाह दूंगा। यह विभिन्न गन्दा मुद्दों का कारण बन सकता है। जब भी आप pip पर sudo के साथ कॉल करने का लुत्फ उठाते हैं, तो कृपया पहले जांचें कि virtualenv आपके लिए बेहतर विकल्प नहीं है।


अधिकांश आधुनिक सिस्टम एकाधिक पायथन दुभाषियों को भेजते हैं। प्रत्येक दुभाषिया अपने स्थापित संकुल के अपने सेट को बनाए रखता है। नए पैकेज स्थापित करते समय, यह समझना महत्वपूर्ण है कि कौन से दुभाषिया वास्तव में स्थापित हैं।

यूनिक्स सिस्टम पर खोल को यह समझने के लिए उपयोग किया जा सकता है कि वास्तव में क्या हो रहा है।

टाइपिंग which -a python आपके दुभाषियों को दिखाता है कि आपके PATH में। पहली पंक्ति दुभाषिया से मेल खाती है जिसका उपयोग तब किया जाता है जब आप कमांड लाइन से python चलाते हैं।

/private/tmp/py32/bin/python 
/usr/local/bin/python 
/usr/bin/python 

प्रत्येक पाइप संस्करण बिल्कुल एक दुभाषिया से संबंधित है। which -a pip सभी पीपी संस्करणों को दिखाता है। जब आप अपने खोल में pip टाइप करते हैं तो फिर पहली पंक्ति कहा जाएगा।

/usr/local/bin/pip 
/usr/bin/python 

ध्यान दें कि इस मामले में python दुभाषिया /private/tmp/py32/ में स्थापित के अंतर्गत आता है, लेकिन pip दुभाषिया /usr/local/bin में स्थापित करता है। लाइब्रेरी के सफल इंस्टॉलेशन के बाद, आप इसे अपने डिफ़ॉल्ट पायथन दुभाषिया में आयात करने में सक्षम नहीं होंगे।

तो आप स्थापित लाइब्रेरी कैसे आयात करते हैं?

आपका पहला विकल्प वांछित दुभाषिया को अपने पूर्ण पथ से शुरू करना है। तो यदि आप /usr/local/bin/python टाइप करते हैं, तो आप लाइब्रेरी आयात करने में सक्षम होंगे।

दूसरा - अक्सर पसंदीदा - विकल्प विशेष रूप से पीआईपी के सही संस्करण का आह्वान करना है। ऐसा करने के लिए, आप pip install <library-name> के बजाय python -m pip install <library-name> का उपयोग कर सकते हैं। यह आपके डिफ़ॉल्ट पायथन दुभाषिया से संबंधित पीआईपी संस्करण को कॉल करेगा।

+0

क्या आधुनिक प्रणालियों में एक ही पायथन का एकाधिक संस्करण है? जब आप '/ usr/local/bin/python' देखते हैं जिसका आमतौर पर मतलब है कि आपने इसे इंस्टॉल किया है। –

+0

जिस बिंदु को मैं बनाने की कोशिश कर रहा हूं वह यह है कि केवल 'पायथन' नहीं है, लेकिन एकाधिक पायथन दुभाषिया हैं। डिफ़ॉल्ट रूप से अक्सर एक python2.x और एक python3.x दुभाषिया। एचएमएच, शायद मुझे अपने बिंदु को स्पष्ट करने के लिए फिर से लिखना होगा। – cel

+0

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

1

@cel ने एक अच्छा जवाब दिया था। आप virtualenv कि आप उपयोग करना चाहते में पुस्तकालय स्थापित कर रहे हैं, तो

  1. चेक देखने के लिए: मैं बस कुछ और बातें जोड़ना चाहते हैं।
  2. कुछ पुस्तकालय हैं जिनके पैकेज नाम लाइब्रेरी के नाम से अलग हैं। आप ऑनलाइन दस्तावेज को देख सकते हैं (कीवर्ड python <library> के साथ Google आमतौर पर जानकारी लाएगा) यह देखने के लिए कि क्या आप पैकेज को सही तरीके से आयात कर रहे हैं या नहीं।

(मुझे पता है कि मेरा उत्तर @ सेल के जवाब के नीचे एक टिप्पणी के रूप में तैनात किया जाना चाहिए है। यह सिर्फ इतना है कि मैं ऐसा करने के लिए पर्याप्त प्रतिष्ठा नहीं है है)

+0

ये सही टिप्पणी होनी चाहिए? –

+0

हाँप। प्रश्न और उत्तर और टिप्पणियों को ध्यान से पढ़कर मुझे फिर से एहसास हुआ कि मेरा एक टिप्पणी होना चाहिए –

+0

हालांकि मैं @ सेल के प्रश्न में टिप्पणी नहीं कर सका और न ही जवाब दे सकता हूं क्योंकि मेरी प्रतिष्ठा 50 से कम है :(इसलिए मेरा 'उत्तर' –