दिलचस्प पोस्ट
जावास्क्रिप्ट निजी विधियों मैटप्ललिब में 2 डी गर्मी के नक्शे के माध्यम से पेजिंग / स्क्रॉल करना मैं ओरेकल में तालिकाओं के आकार की गणना कैसे करूं? INNER JOIN स्थिति में एक 'OR' क्या एक बुरा विचार है? ईपीप्लस का प्रयोग करके डेटाटाइबल में एक्सेल – संपादन के लिए एक्सेल लॉक पूर्णांक संख्या को बाइनरी वेक्टर में कैसे परिवर्तित किया जाए? जावा का उपयोग कर मैं एक मल्टीपार्ट / फॉर्म-डाटा पोस्ट अनुरोध कैसे कर सकता हूं? पायथन: एक शब्दकोश में मूल्य के साथ एक्सचेंज कुंजी का सबसे अच्छा तरीका है? सी # यूनिकोड स्ट्रिंग आउटपुट जावा मूल पद्धति स्रोत कोड नेविगेशन नियंत्रक कस्टम संक्रमण एनीमेशन बेस 64 एन्कोडर और डिकोडर ओपनजीएल ईएस दृश्य में एनीमेशन फ्रीज होता है जब यूआईएसक्रोलएव्यू को iPhone पर खींच लिया जाता है मेरी प्रीरीलेज़ ऐप iTunes Connect में एक हफ़्ते से अधिक समय तक "प्रोसेसिंग" रही है, क्या देता है? मैं एक SQLite क्वेरी में regex का उपयोग कैसे करूं?

पायथन त्रुटि "आयात इर्रर: कोई मॉड्यूल नाम नहीं"

पायथन एक स्थानीय निर्देशिका में स्थापित किया गया है।

मेरी डायरेक्टरी ट्री इस तरह दिखती है:

(local directory)/site-packages/toolkit/interface.py 

मेरा कोड यहां है:

 (local directory)/site-packages/toolkit/examples/mountain.py 

उदाहरण को चलाने के लिए, मैं python mountain.py लिखता हूं, और मेरे पास कोड में:

 from toolkit.interface import interface 

और मुझे त्रुटि मिलती है:

 Traceback (most recent call last): File "mountain.py", line 28, in ? from toolkit.interface import interface ImportError: No module named toolkit.interface 

मैंने पहले ही sys.path जाँच की है और वहां मेरे पास निर्देशिका /site-packages I साथ ही, मेरे पास टूलकिट फ़ोल्डर में फ़ाइल __init__.py.bin जो पायथन को इंगित करता है कि यह एक पैकेज है। उदाहरण निर्देशिका में मेरे पास एक __init__.py.bin . है।

मुझे नहीं पता कि पायथन क्यों नहीं मिला जब यह sys.path कोई विचार? क्या यह एक अनुमति समस्या हो सकती है? क्या मुझे कुछ निष्पादन की आवश्यकता है?

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

ओरिप की पोस्ट पर आपकी टिप्पणियों के आधार पर, मुझे लगता है कि यह हुआ है:

  1. आपने windows पर __init__.py संपादित किया है
  2. खिड़कियों के संपादक ने कुछ गैर-प्रिंटिंग को जोड़ा, शायद एक गाड़ी-वापसी (विंडोज़ का अंत सीआर / एलएफ है, यूनिक्स में यह केवल एलएफ है), या शायद एक CTRL-Z (विंडोज़ ऑफ़-ऑफ-फाइल)।
  3. आपने अपने यूनिक्स बॉक्स में फ़ाइल की प्रतिलिपि बनाने के लिए WinSCP का इस्तेमाल किया।
  4. WinSCP ने सोचा: "यह कुछ ऐसा मूल पाठ नहीं है; मैं बाइनरी डेटा को इंगित करने के लिए। Bin एक्सटेंशन डालूंगा।"
  5. अनुपलब्ध __init__.py (अब __init__.py.bin कहा जाता है) का अर्थ है अजगर टूलकिट को पैकेज के रूप में नहीं समझता है।
  6. आप उपयुक्त डायरेक्टरी में __init__.py बनाते हैं और सब कुछ काम करता है …?

कर देता है

 (local directory)/site-packages/toolkit 

एक __init__.py ?

अपनी निर्देशिकाओं के माध्यम से चलना आयात करने के लिए हर निर्देशिका में एक __init__.py फ़ाइल होना चाहिए।

* निक्स पर, यह भी सुनिश्चित करें कि PYTHONPATH सही ढंग से कॉन्फ़िगर किया गया है, खासकर कि उसके पास यह प्रारूप है:

  .:/usr/local/lib/python 

(ध्यान दें .: शुरुआत में, ताकि वह वर्तमान निर्देशिका पर भी खोज कर सके।)

यह संस्करण के आधार पर, अन्य स्थानों में भी हो सकता है:

  .:/usr/lib/python .:/usr/lib/python2.6 .:/usr/lib/python2.7 and etc. 

मैंने अपनी समस्या हल की, और मैं उन चीजों का सारांश लिखूंगा जो गलत थे और समाधान:

फाइल को बिल्कुल __init__.py कहा जाना चाहिए। यदि एक्सटेंशन मेरे मामले .py.bin में अलग है, तो पायथन निर्देशिकाओं के माध्यम से नहीं जा सकता और फिर यह मॉड्यूल नहीं मिल सकता है। फ़ाइलों को संपादित करने के लिए आपको एक लिनक्स संपादक, जैसे vi या nano का उपयोग करने की आवश्यकता है। यदि आप एक Windows संपादक का उपयोग करते हैं तो यह कुछ छिपे हुए अक्षर लिखेंगे।

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

जब मैंने एलपीटीएच में इस अभ्यास को किया तो मैंने कुछ समानता में भाग लिया; मैं कभी नहीं पाईथन को पहचान सकता था कि मैं उस निर्देशिका में फाइल कर रहा था जिसे मैं कॉल कर रहा था। लेकिन मैं इसे अंत में काम करने में सक्षम था मैंने क्या किया, और जो मैं सुझाता हूं, यह कोशिश करना है:

(नोट: आपके आरंभिक पोस्ट से, मैं मानता हूं कि आप एक * एनआईसीआई-आधारित मशीन का उपयोग कर रहे हैं और कमांड लाइन से चीजें चला रहे हैं, इसलिए यह सलाह उस के अनुरूप है। चूंकि मैं उबंटू चलाता हूं, यह मैंने किया है I

1) निर्देशिका (सीडी) को निर्देशिका के ऊपर निर्देशिका में बदलें जहां आपकी फ़ाइलें हैं इस स्थिति में, आप mountain.py फाइल को चलाने की कोशिश कर रहे हैं, और toolkit.interface.py मॉड्यूल को कॉल करने की कोशिश कर रहे हैं, जो अलग-अलग निर्देशिकाओं में हैं इस स्थिति में, आप उस निर्देशिका में जाते हैं जिसमें उन दोनों फ़ाइलों (या दूसरे शब्दों में, निकटतम डायरेक्टरी में दोनों फाइलों के पथ को साझा करते हैं) दोनों में पथ शामिल होते हैं जो इस मामले में toolkit निर्देशिका है

2) जब आप tookit डायरेक्टरी में होते हैं, तो अपनी कमांड लाइन पर कोड की इस पंक्ति को दर्ज करें:

export PYTHONPATH=.

यह आपके PYTHONPATH को "।" पर सेट करता है, जिसका मूल रूप से मतलब है कि आपका PYTHONPATH अब उस डायरेक्टरी के भीतर किसी भी नामित फाइलों को देखेगा, जो वर्तमान में आप हैं, (और अधिक बिंदु पर, उस निर्देशिका की उप-डायरेक्टरी शाखाओं में जो आप में हैं तो यह सिर्फ आपकी वर्तमान निर्देशिका में नहीं दिखता है, बल्कि आपकी सभी निर्देशिकाओं में जो आपकी वर्तमान निर्देशिका में हैं)।

3) उपरोक्त कदम में अपने PYTHONPATH को सेट करने के बाद, अपने मॉड्यूल को अपनी वर्तमान निर्देशिका ( toolkit निर्देशिका) से चलाएं। अजगर अब निर्दिष्ट किए गए मॉड्यूल को खोज और लोड करना चाहिए।

उम्मीद है की यह मदद करेगा। मैं अपने आप से बहुत निराश था

एक डायरेक्टरी को एक पैकेज के रूप में चिह्नित करने के लिए आपको __init__.py नाम की फाइल की आवश्यकता है, क्या यह मदद करता है?

हाँ। आपको __init__.py फ़ाइल को रखने के लिए निर्देशिका की आवश्यकता होती है, जो कि फ़ाइल को आरंभ करता है जो पैकेज को आरंभ करता है। यहां, इस पर एक नज़र डालें।

पैकेट को डायरेक्ट्रीज़ को संकुल के रूप में रखने के लिए __init__.py फाइलों को आवश्यक है; यह एक साधारण नाम के साथ निर्देशिका को रोकने के लिए किया जाता है, जैसे कि स्ट्रिंग, अनजाने में मान्य मॉड्यूल को छुपाता है जो बाद में मॉड्यूल खोज पथ पर होता है। सरलतम मामले में, __init__.py सिर्फ एक खाली फ़ाइल हो सकता है, लेकिन यह पैकेज के लिए आरंभीकरण कोड भी निष्पादित कर सकता है या बाद में वर्णित __all__ चर, सेट कर सकता है।

  1. आपके पास फ़ाइल __ init__.py उसी निर्देशिका में होना चाहिए जहां यह फ़ाइल है जिसे आप आयात कर रहे हैं।
  2. आप उस फ़ाइल को आयात करने का प्रयास नहीं कर सकते हैं जिसका नाम समान है और पीआईथोनपाथ पर कॉन्फ़िगर किए गए 2 फ़ोल्डर्स से एक फ़ाइल है।

उदाहरण: / etc / पर्यावरण

PYTHONPATH = $ PYTHONPATH: / opt / फ़ोल्डर 1: / opt / folder2

/ Opt / फ़ोल्डर 1 / foo

/ Opt / folder2 / foo

और, अगर आप foo फ़ाइल को आयात करने का प्रयास कर रहे हैं, तो अजगर को यह नहीं पता होगा कि आप किसको चाहते हैं

foo आयात से … >> importerror: कोई मॉड्यूल foo नामित नहीं है

लिनक्स: आयातित मॉड्यूल /usr/local/lib/python2.7/dist-packages में स्थित हैं

यदि आप सी में संकलित किए गए मॉड्यूल का उपयोग कर रहे हैं, तो sudo setup.py install बाद फाइल को sudo setup.py install लिए मत भूलें।

 sudo chmod 755 /usr/local/lib/python2.7/dist-packages/*.so 

मेरे मामले में, समस्या यह थी कि मैं python और boost::Python को जोड़ रहा था, जिसकी आवश्यकता है कि एक्सटेंशन FooLib_d.pyd , न कि केवल FooLib.pyd ; फ़ाइल का नाम बदलने या CMakeLists.txt गुणों को अपडेट करने से त्रुटि ठीक हो गई।

PyCharm (JetBrains सुइट का हिस्सा) का उपयोग करके आपको अपनी स्क्रिप्ट निर्देशिका को स्रोत के रूप में परिभाषित करना होगा:
Right Click > Mark Directory as > Sources Root

मेरे दो सेंट:

यहां छवि विवरण दर्ज करें

थूक:

 Traceback (most recent call last): File "bash\bash.py", line 454, in main import bosh File "Wrye Bash Launcher.pyw", line 63, in load_module mod = imp.load_source(fullname,filename+ext,fp) File "bash\bosh.py", line 69, in <module> from game.oblivion.RecordGroups import MobWorlds, MobDials, MobICells, \ ImportError: No module named RecordGroups 

यह मुझे नरक से उलझन में था – पदों और पदों के माध्यम से बदसूरत सिस्पाथ हैक्स सुझाव (जैसा कि आप देख रहे थे मेरे __init__.py सभी थे)। खैर पता चलता है कि गेम / इब्लिवियाज और गेम / विस्मृति भ्रामक अजगर है जो "रिकॉर्ड्स ग्रुप नामित कोई मॉड्यूल" को बेकार नहीं करता है। मैं एक वैकल्पिक हल और / या इस (समान नाम) व्यवहार -> संपादित करें (2017.01.24) को लिंक करने में दिलचस्पी लेगा – क्या मुझे एक मॉड्यूल और एक ही नाम के साथ एक पैकेज है? दिलचस्प रूप से आमतौर पर संकुल को प्राथमिकता दी जाती है, लेकिन जाहिरा तौर पर हमारा लांचर इस का उल्लंघन करता है

संपादित करें (2015.01.17): मैंने यह नहीं बताया कि हम यहां एक कस्टम लॉन्चर का उपयोग करते हैं ।

एक आसान समाधान है कि आप python -m pip install <library-name> का उपयोग करके मॉड्यूल को स्थापित कर सकते हैं python -m pip install <library-name> pip install <library-name> बजाय pip install <library-name> आप व्यवस्थापक प्रतिबंधों के मामले में sudo का उपयोग कर सकते हैं

यदि आपने उपर्युक्त सभी विधियों का प्रयास किया है लेकिन असफल रहा है, तो शायद आपके मॉड्यूल को एक अंतर्निहित मॉड्यूल के समान नाम है । या, एक मॉड्यूल जिसका फ़ोल्डर आपके मॉड्यूल की तुलना में sys.path में एक उच्च प्राथमिकता वाले फ़ोल्डर में sys.path है।

डीबग करने के लिए, अपने ई-मेल from foo.bar import baz शिकायतों का from foo.bar import baz करें from foo.bar import baz ImportError: No module named barimport foo; print foo करने के लिए import foo; print foo import foo; print foo , जो import foo; print foo के पथ को दिखाएगा। क्या यह आप की उम्मीद है?

यदि नहीं, तो foo नाम बदलें या पूर्ण आयात का उपयोग करें

उसी मुद्दे को pyc बाद मैंने पाया कि मेरा प्रस्ताव मेरे प्रोजेक्ट से सभी pyc फाइलों को हटाने के लिए था, ऐसा लगता है कि इन कैश्ड फाइलों में कोई त्रुटि उत्पन्न हुई थी

मुझे सबसे आसान तरीके से विंडोज एक्सप्लोरर में मेरे प्रोजेक्ट फ़ोल्डर में जाना और *.pyc लिए खोज *.pyc , फिर सभी ( Ctrl + A ) का चयन करना और उन्हें हटा देना ( Ctrl + X )।

संभव है कि मैं केवल विशिष्ट pyc फ़ाइल को हटा कर अपने मुद्दों का समाधान कर सकता था लेकिन मैंने कभी यह कोशिश नहीं की

मुझे एक ही समस्या का सामना करना पड़ा: Import error इसके अलावा पुस्तकालय 100% सही ढंग से स्थापित किया गया है समस्या का स्रोत यह था कि मेरे पीसी के अजगर (एनाकाडो पैकेट) के 3 संस्करण को स्थापित किया गया है)। यही कारण है कि पुस्तकालय सही स्थान पर नहीं स्थापित किया गया था। इसके बाद मैं सिर्फ अपने आईडीई PyCharm में अजगर के उचित संस्करण में बदल गया।

print (sys.path) लिखकर मेरी समस्या तय की गई और पता चला कि अजगर एक साफ इंस्टॉल के बावजूद पुराने पैकेज का उपयोग कर रहा था। इन किए गए अजगर को हटाने से स्वचालित रूप से सही पैकेज का उपयोग किया जाता है।

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