दिलचस्प पोस्ट
पायथन में इंस्टेंस चर बनाम क्लास चर आर में डेटा फ्रेम से स्तरीकृत यादृच्छिक नमूना रंग ऑब्जेक्ट की तुलना करने के लिए और रंग में सबसे नज़दीकी रंग कैसे प्राप्त करें ? क्या "सेट वर्ण सेट utf8" आवश्यक है? आईओएस 7 टेक्स्टकिट – छवि के साथ इनलाइन को कैसे सम्मिलित करें? क्या यह सच है कि जावास्क्रिप्ट में हर समारोह बंद है? उच्च चार्ज टूलटिप फसल कचरा संग्रह कैसे जावास्क्रिप्ट में काम करता है? जावा में सरल विभाजन – क्या यह एक बग या एक फीचर है? तुल्यकालिक कनेक्शन के लिए एचटीटीपी क्लाइंट का उपयोग क्यों करें अजगर जैसे पायथन तत्व-वार ट्यूपल परिचालन RxJava शेड्यूलर्स केस का उपयोग करें MySQL – कॉलम के लिए पंक्तियाँ एक एसक्यूएल इन खंड पैरामीटर बनाना Win32 पर ओपनसीवी 2.0 कैसे स्थापित करें I

पायथन स्क्रिप्ट को चलाने का प्रयास करते समय "ImportError: कोई मॉड्यूल नाम नहीं"

मैं एक स्क्रिप्ट चलाने की कोशिश कर रहा हूं जो अन्य चीजों के बीच लॉन्च करता है, एक अजगर स्क्रिप्ट। मुझे एक ImportError मिलता है: कोई मॉड्यूल नाम नहीं …, हालांकि, अगर मैं आईप्याथॉन लॉन्च करता हूं और इसी मॉड्यूल को इंटरप्रिटर के माध्यम से आयात करता हूं, तो मॉड्यूल स्वीकार किया जाता है।

क्या हो रहा है और मैं इसे कैसे ठीक कर सकता हूं? मैंने यह समझने की कोशिश की है कि अजगर कैसे Python PYTHONPATH का उपयोग करता है लेकिन मैं पूरी तरह से भ्रमित हूँ कोई मदद काफी सराहना करेंगे

वेब के समाधान से एकत्रित समाधान "पायथन स्क्रिप्ट को चलाने का प्रयास करते समय "ImportError: कोई मॉड्यूल नाम नहीं""

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

 import os os.getcwd() 

आप देखेंगे कि यह सच है।

हालांकि, os.getcwd() लें कि आप एक os.getcwd() नोटबुक का उपयोग कर रहे हैं, os.getcwd() चलाते हैं और आपकी वर्तमान कार्यशील निर्देशिका उस फ़ोल्डर के बजाय है जिसमें आपने नोटबुक को अपने ipython_notebook_config.py फ़ाइल में संचालित करने के लिए कहा था (आम तौर पर c.NotebookManager.notebook_dir का उपयोग करते c.NotebookManager.notebook_dir सेटिंग)

इसका समाधान पथ-टू-आपके-मॉड्यूल के साथ अजगर दुभाषिया प्रदान करना है सबसे आसान उपाय है कि पथ को आपके sys.path सूची में जोड़ने के लिए। अपनी नोटबुक में, पहले प्रयास करें:

 import sys sys.path.append('my/path/to/module/folder') import module-of-interest 

यदि वह काम नहीं करता है, तो आपको पथ-टू-इंपोर्ट से संबंधित नहीं है और आपको अपनी समस्या के बारे में अधिक जानकारी प्रदान करनी चाहिए।

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

बस एक खाली अजगर फ़ाइल को नाम के साथ __init__.py बनाएँ जो त्रुटि दिखा रहा है, जबकि आप अजगर परियोजना चला रहे हैं।

सुनिश्चित करें कि वे दोनों एक ही दुभाषिया का प्रयोग कर रहे हैं। उबंटू पर यह मेरे साथ हुआ:

 $ ipython3 > sys.version '3.4.2 (default, Jun 19 2015, 11:34:49) \n[GCC 4.9.1]' $ python3 > sys.version '3.3.0 (default, Nov 27 2012, 12:11:06) \n[GCC 4.6.3]' 

और sys.path दो interpreters के बीच अलग था। इसे ठीक करने के लिए, मैंने पायथन 3.3 हटा दिया।

sys.path.append('my-path-to-module-folder') करना, काम करेगा, लेकिन हर बार जब आप मॉड्यूल का उपयोग करना चाहते हैं तो इसे sys.path.append('my-path-to-module-folder') करने से बचने के लिए, आप export PYTHONPATH="my-path-to-module-folder:$PYTHONPATH" जोड़ सकते हैं export PYTHONPATH="my-path-to-module-folder:$PYTHONPATH" अपने ~/.bash_profile फ़ाइल में

मुख्य कारण पायथन और आईप्याथन के sys.paths अलग हैं।

कृपया lucypark लिंक देखें, समाधान मेरे मामले में काम करता है। यह तब होता है जब opencv द्वारा इंस्टॉल किया जाता है

conda install opencv

और iPython में आयात त्रुटि मिला, इस समस्या को हल करने के लिए तीन चरण हैं:

 import cv2 ImportError: ... 

1. निम्नलिखित कमांड के साथ पायथन और iPython में पथ की जांच करें

 import sys sys.path 

आपको पता होना चाहिए कि वे अलग परिणाम हैं दूसरा चरण, बस sys.path.append का उपयोग sys.path.append गए पथ को ठीक करने के लिए try-and-error का उपयोग करें।

2. अस्थायी समाधान

IPython में:

 import sys sys.path.append('/home/osboxes/miniconda2/lib/python2.7/site-packages') import cv2 

ImportError:.. समस्या हल

3. स्थायी समाधान

एक iPython प्रोफ़ाइल बनाएं और प्रारंभिक अनुलग्नक सेट करें:

बैश खोल में:

 ipython profile create ... CHECK the path prompted , and edit the prompted config file like my case vi /home/osboxes/.ipython/profile_default/ipython_kernel_config.py 

Vi में, फ़ाइल में जोड़ें:

 c.InteractiveShellApp.exec_lines = [ 'import sys; sys.path.append("/home/osboxes/miniconda2/lib/python2.7/site-packages")' ] 

किया हुआ

Ipython स्थापित करने से पहले, मैं easy_install के माध्यम से मॉड्यूल स्थापित किया है; sudo easy_install mechanize कहना

Ipython को स्थापित करने के बाद, मुझे आईप्याथॉन के लिए मॉड्यूल को पहचानने के लिए easy_install को पुन: चालू करना पड़ा।

अगर इसी तरह की समस्या थी, तो python बजाय python को कॉल करके इसे तय किया गया, मेरे मॉड्यूल python 3.5 में थे।

मुझे इस विसंगति का एक अन्य स्रोत मिला:

मेरे पास आईप्याथॉन को स्थानीय रूप से और सामान्यतः वर्चुअलएन्वीज़ में स्थापित किया गया है। मेरी समस्या यह थी कि, आइप्थथन के साथ एक नवनिर्मित वर्चुअलएन्व के अंदर, सिस्टम आइप्थॉन को उठाया गया था, जो आभासी (अजगर) में अजगर और आइप्थथन की तुलना में एक अलग संस्करण था (एक 2.7.x। 3.5.x)।

मुझे लगता है कि जब कुछ भी इंस्टॉल हो जाता है जो आपके yourvirtualenv/bin में एक द्विआधारी होता है, तो आप तुरंत जो भी शेल उपयोग कर रहे हैं के लिए yourvirtualenv/bin या इसी तरह के समान हैं, ताकि सही अजगर / आईपथाथन को उठाया जा सके। (चेक होगा कि क्या उपयुक्त pip पोस्ट स्थापित हुक हैं …)

यदि आप इसे कमांड लाइन से चला रहे हैं, तो कभी-कभी अजगर दुभाषिया को पथ के बारे में जानकारी नहीं है, जहां मॉड्यूल देखने के लिए।

नीचे मेरी परियोजना की निर्देशिका संरचना है:

 /project/apps/.. /project/tests/.. 

मैं कमांड के नीचे चल रहा था:

 >> cd project >> python tests/my_test.py 

कमांड के ऊपर चलने के बाद मुझे त्रुटि मिल गई

 no module named lib 

मेरी_test.py में लिब आयात किया गया था

मैंने sys.path मुद्रित किया और मुझे पता चला कि जिस परियोजना पर मैं काम कर रहा हूं वह पथ sys.path सूची में उपलब्ध नहीं है

मैं अपनी स्क्रिप्ट my_test.py की शुरुआत में कोड नीचे जोड़ my_test.py

 import sys import os module_path = os.path.abspath(os.getcwd()) if module_path not in sys.path: sys.path.append(module_path) 

मुझे यकीन नहीं है कि यह इसे सुलझाने का एक अच्छा तरीका है, लेकिन हाँ, उसने मेरे लिए काम किया है

पथलिब को हटा दें और इसे पुनः इंस्टॉल करें।

साइटपैकेज फ़ोल्डर में पथलिब को हटाएं और पाइप कमांड का उपयोग करके पथलिब पैकेज को पुनर्स्थापित करें।

पीआईपी स्थापित करें pathlib

मैं इसे कैसे तय किया है:

 import os import sys module_path = os.path.abspath(os.getcwd() + '\\..') if module_path not in sys.path: sys.path.append(module_path)