अजगर त्रुटि "आयात: कोई मॉड्यूल नाम"


452

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

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

(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। इसके अलावा, मेरे पास __init__.py.binपायथन को इंगित करने के लिए टूलकिट फ़ोल्डर में फ़ाइल है कि यह एक पैकेज है। मेरे पास __init__.py.binउदाहरण निर्देशिका में एक भी है ।

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


3
जांचें कि आपने अजगर से उस फ़ाइल की अनुमति पढ़ ली है। देखें: stackoverflow.com/a/20999950/1657225
cSn

1
कृपया अपनी निर्देशिका को "संसाधन रूट" के रूप में चिह्नित करना सुनिश्चित करें ताकि PyCharm को यह पता चल सके कि यह एक पैकेज है।
Emmmphd

मेरे मामले में समस्या यह थी कि नए स्थापित मॉड्यूल की अनुमति नहीं थी 755। ऐसा इसलिए था क्योंकि umaskमशीन पर था 0027जिसके कारण मॉड्यूल को पढ़ने की अनुमति othersनहीं थी readreadअनुमति जोड़ने से मेरी समस्या ठीक हो गई। यह टारगेट डायरेक्टरी पोस्ट-इंस्टालेशन की अनुमति की जाँच के लायक है।
अनु


हो सकता है कि स्थानीय निर्देशिका नाम interface (एक संघर्ष रहा हो)।
बेन्यामिन जाफरी

जवाबों:


267

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

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

50
इसके अलावा, अजगर -c 'आयात sys; प्रिंट sys.path 'मदद करता है - कभी-कभी उपयोगकर्ता ने फ़ाइलों को स्कैन नहीं किए गए पथ में रखा है।
15

1
मैं एक ही चीज़ का उपयोग कर रहा हूं, सिवाय WinSCP के एपेंडेड के .bin
उपयोगकर्ता

9
अगर मेरे पास एक खाली "__init__.py" होगा तो वही बात होगी?
डायटबाकॉन

2
OMG, तुम राज करो! यह मेरी कहानी है: 1. आप संपादित init .py खिड़कियों 2. पर यह इस पोस्ट खोजने जब तक एक बहुत गूगल एक टैब के बजाय रिक्त स्थान 3. अतिरिक्त! ;)
जीब्रियन

1
मेरे लिए इस मुद्दे को मैं उपयोग कर रहा था था python driver.pyजब मैं जाना चाहिए था का उपयोग किया गया python3 driver.pyके बाद से मैं के साथ स्थापित किया pip3
एरिक वीनर

72

कर देता है

(local directory)/site-packages/toolkit

लीजिये __init__.py ?

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


1
अच्छी बात! टिप्पणी: पाइथन 3.3 के बाद से, पैकेज नाम से मेल खाने वाले नाम के साथ sys.path पर कोई भी निर्देशिका पहचानी जाएगी।
पैट्रिक

1
यह केवल सापेक्ष पथ संदर्भों के लिए आवश्यक नहीं है? हर निर्देशिका में क्यों होना चाहिए ?
सोनिक सोल

56

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

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

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

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

export PYTHONPATH=.

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

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

उम्मीद है की यह मदद करेगा। मैं खुद इस बात से काफी निराश था।


2
या विंडोज पर set PYTHONPATH=.
cjbarth

इसने मेरे लिए काम किया। इसके अलावा पूरी तरह से मेरे PYTHONPATH कुंठाओं को सरल बना दिया, क्योंकि मुझे हर बार जब मैं मशीनों को स्विच करता हूं, तो इसे एक पूर्ण पथ पर अपडेट करना होगा। धन्यवाद धन्यवाद धन्यवाद।
the_e

41

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

 .:/usr/local/lib/python

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

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

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

6
यह भी हो सकता है .:/usr/lib/python, .:/usr/lib/python2.6, .:/usr/lib/python2.7और आदि संस्करण के आधार पर
निकिता Volkov

मेरे लिए, मॉड्यूल /usr/local/lib/python3.4/dist-packages में है, लेकिन जब मैं टर्मिनल (ubuntu) में python3 टाइप करता हूं, और इसे आयात करने की कोशिश करता हूं, तो यह मुझे अनुमति नहीं देता, यह कहते हुए कि यह मौजूद नहीं है। "ImportError: कोई मॉड्यूल x मौजूद नहीं है"
user65165

#!/usr/bin/pythonएक फ़ाइल के अंत में जोड़ना भी सही काम करना चाहिए?
निहारो

1
@ नीरो मुझे नहीं लगता कि यह काम करेगा। इसके अलावा आम तौर पर एक फ़ाइल के शीर्ष पर इस शेबंग को जोड़ा जाता है।
रेनॉड

2
MacOSX पर स्टार्टअप स्क्रिप्ट में PYTHONPATH = / usr / local / lib / python2.7 / साइट-पैकेज जोड़कर इसे ठीक किया।
जोहान स्नोगोजो

23

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

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

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


मेरे पास एक समस्या यह थी कि एक मॉड्यूल था (पुनः) पाइप द्वारा स्थापित करने के लिए इसे एक्सेस करने के लिए केवल रूट उपयोगकर्ता के साथ, इसलिए प्रोग्राम चलाने वाले उपयोगकर्ता ने इसे नहीं देखा।
जानिस एल्मरिस

@ JANisElmeris आप उपरोक्त टिप्पणी पर अधिक विस्तृत कर सकते हैं, मुझे लगता है कि मैं भी इसी तरह की त्रुटि का सामना कर रहा हूं। मेरे पास मेरी __init__.pyफाइलें प्रासंगिक निर्देशिका में हैं, लेकिन मैंने मैन्युअल रूप से एक पैकेज का उपयोग किया है setup.py। नया पैकेज स्थापित करने से आयात कैसे बाधित होगा।
कृष्णा ओझा

@darth_coder, क्षमा करें, यह छह साल पहले था और मुझे मामला याद नहीं है। इसके अलावा, मैं अजगर के साथ बहुत कम व्यवहार कर रहा हूं, बिल्कुल भी नहीं। मैंने जो लिखा है, मैं बस सोच सकता हूं कि मैंने एक पैकेज को रूट के रूप में स्थापित किया है, जिसने अनुमतियों को बदल दिया है ताकि अन्य उपयोगकर्ताओं के पास पहले तक पहुंच न हो।
जानिस एल्मरिस

19

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


2
python -mसामने क्या हासिल करता है pip install?
sporc

1
@ sporc - जब आप -m कमांड-लाइन फ्लैग का उपयोग करते हैं, तो पायथन आपके लिए एक मॉड्यूल या पैकेज आयात करेगा और फिर इसे स्क्रिप्ट के रूप में चलाएगा। जब आप -m ध्वज का उपयोग नहीं करते हैं, तो आपके द्वारा नाम की गई फ़ाइल को केवल एक स्क्रिप्ट के रूप में चलाया जाता है।
टोनी सिस्कारोन

यह निश्चित नहीं है कि यह उत्तर क्या python -m pip...काम करने की कोशिश कर रहा है, लेकिन pip...यह नहीं कहा गया: वे प्रभावी रूप से एक ही बात कर रहे हैं, यह मानते हुए कि वे वास्तव में एक ही pythonनिर्देशिका में हैं। संभवतः, देखी गई स्थिति यह थी कि स्टैंड-अलोन pipकार्यक्रम कुछ पुराने अजगर रिलीज में उपलब्ध नहीं था (लेकिन यह अब नवीनतम 2.7 और 3.x में है)। उस मामले में, pythonएक स्थानीय virtualenv में था औरpip था ऐसा नहीं था, इसलिए python -m pip installस्थानीय virtualenv में स्थापित होगा, जबकि pipसिस्टम अजगर में स्थापित करने का प्रयास करेगा (और w / o sudo विफल)। किसी भी मामले में, इसका कोई मतलब नहीं है।
माइकल

17

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


मेरे पास पहले से init .py.bin नामक एक फ़ाइल है , अगर मैं init .py में नाम बदलूं , तो मुझे यह त्रुटि मिलती है: /__init__.py ", पंक्ति 1" उपयोगिताओं "," डेमो "] ^ SyntaxError
एडुआर्डो

Init .py में क्या है ? कृपया अपने प्रश्न के भाग के रूप में पोस्ट करें।
एस.लॉट

कुछ भी नहीं है, यह खाली है, यह उस पैकेज के साथ था जिसे मैं डाउनलोड करता हूं, क्या मुझे फ़ाइल में कुछ लिखने की ज़रूरत है?
एडुआर्डो

@ S.Lott: आपको अपने init में कुछ भी डालने की आवश्यकता नहीं है । सही है?
igorgue

1
@Eduardo। आपकी init .py में त्रुटि मिलती है। और आप कहते हैं कि यह खाली है। जिसे समेटना मुश्किल है। और इसे init .py.bin नहीं कहा जा सकता - पायथन इस फाइल को अनदेखा कर देगा। आमतौर पर, इसमें कुछ भी नहीं हो सकता है।
लोट

16

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


12

आप पढ़ रहे हैं यह उत्तर कहता है कि आपका __init__.pyसही स्थान है, आपने सभी निर्भरताएं स्थापित की हैं और आप अभी भी प्राप्त कर रहे हैंImportError

मैं इसी तरह के मुद्दे का सामना कर रहा था, सिवाय इसके कि मेरा कार्यक्रम ठीक से चलेगा जब PyCharm का उपयोग करके भाग गया था, लेकिन उपरोक्त त्रुटि जब मैं इसे टर्मिनल से चलाऊंगा। आगे खुदाई करने के बाद, मुझे पता चला कि PYTHONPATHपरियोजना निर्देशिका के लिए प्रविष्टि नहीं थी। इसलिए, मैं PyCharm परPYTHONPATH प्रति आयात विवरण काम करता हूं, लेकिन टर्मिनल से नहीं :

export PYTHONPATH=$PYTHONPATH:`pwd`  (OR your project root directory)

इसका उपयोग करने का एक और तरीका है sys.path:

import sys
sys.path.insert(0,'<project directory>') OR
sys.path.append('<project directory>')

आप उस क्रम के आधार पर इन्सर्ट / अपेंडेड का उपयोग कर सकते हैं जिसमें आप चाहते हैं कि आपकी परियोजना खोजी जाए।


12

मेरे लिए, यह वास्तव में कुछ बेवकूफ था। मैंने पुस्तकालय का उपयोग कर स्थापित किया, pip3 installलेकिन इसके python program.pyविपरीत मेरा कार्यक्रम चला रहा था python3 program.py


1
वाह ! मेरे लिए भी यही काम आया।
JavaDeveloper

1
आपने मेरा दिन बचाया।
ऐमीन

7

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

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


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

जैसे: / etc / पर्यावरण

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

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

/ Opt / folder2 / foo

और, अगर आप फू फ़ाइल आयात करने की कोशिश कर रहे हैं, तो अजगर को पता नहीं चलेगा कि आपको कौन सा चाहिए।

फू आयात से ... >>> आयातक: फू नाम का कोई मॉड्यूल नहीं


5

मेरे दो सेंट:

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

थूक:

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सभी वहां थे)। अच्छी तरह से पता चलता है कि खेल / oblivion.py और game / गुमनामी अजगर को भ्रमित कर रहा था जो कि रिकॉर्ड किए गए "कोई मॉड्यूल नहीं जिसे रिकॉर्डग्रुप्स" नाम दिया गया था। मैं एक वर्कअराउंड और / या इस (एक ही नाम) व्यवहार के दस्तावेज़ीकरण के लिंक में दिलचस्पी लूंगा -> EDIT (2017.01.24) - अगर मेरे पास मॉड्यूल है और समान नाम वाला पैकेज है, तो इस पर एक नज़र डालें ? दिलचस्प रूप से सामान्य रूप से पैकेज पूर्वता लेते हैं लेकिन जाहिर तौर पर हमारे लॉन्चर इसका उल्लंघन करते हैं।

संपादित करें (2015/01/17): मैं हम एक का उपयोग का उल्लेख नहीं था कस्टम लांचर विच्छेदित यहाँ


अधिक रास्ता बंद है। game.oblivion.RecordGroups !== game/oblivion/patchers/RecordGroups.py ठीक करने के लिए अपने अजगर कोड का उपयोग करने के साथ इसे ठीक करना चाहते हैं:game.oblivion.patchers.RecordGroups
ड्वाइट स्पेंसर

@DwightSpencer: मुझे यकीन है कि मैंने "RecordGroups" आयात किया है, game.oblivion.__init__.pyलेकिन इसे जांचना पड़ सकता है
Mr_and_Mrs_D

4

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

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

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

3

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


3

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

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

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


1
मेरे लिए, यह पैदावार है ImportError: No module named foo
एलेक्स

3

मेरी समस्या यह थी कि मैंने निर्देशिका को __init__.pyफाइल के साथ PYTHONPATH में जोड़ा , जब वास्तव में मुझे इसके मूल निर्देशिका को जोड़ने की आवश्यकता थी।


3

उन सभी के लिए जिनके पास अभी भी यह मुद्दा है। मेरा मानना ​​है कि Pycharm आयातों को लेकर उलझन में है। मेरे लिए, जब मैं 'नाम से कुछ आयात करता हूं' लिखता हूं, तो पिछली पंक्ति लाल रंग में रेखांकित हो जाती है, यह दर्शाता है कि कोई त्रुटि है, लेकिन काम करता है। हालांकि '' से .namespace कुछ आयात करते हैं '' रेखांकित नहीं करता है, लेकिन यह भी काम नहीं करता है।

प्रयत्न

try:
    from namespace import something 
except NameError:
    from .namespace import something

1
पहला अजगर 2 सिंटेक्स है, दूसरा अजगर 3 है
तान्या ब्रानगन

2

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


2

मेरे मामले में, क्योंकि मैं PyCharm और PyCharm का उपयोग कर रहा हूं, प्रोजेक्ट फ़ोल्डर में प्रत्येक प्रोजेक्ट के लिए एक 'वेनव' बना रहा हूं, लेकिन यह केवल अजगर का एक मिनी एनवी है। हालाँकि आपने पाइथन में उन पुस्तकालयों को स्थापित किया है, लेकिन आपके कस्टम प्रोजेक्ट 'वेनव' में यह उपलब्ध नहीं है। यह 'इंट्रोडेयर: नो मॉड्यूल विथ एक्सएक्सएक्सएक्सएक्सएक्स' का असली कारण है, जो पियरम में हुआ था। इस समस्या को हल करने के लिए, आपको इन चरणों द्वारा अपने प्रोजेक्ट कस्टम एनवी में लाइब्रेरी जोड़ना होगा:

  • PyCharm में, मेनू 'फ़ाइल' -> सेटिंग्स से
  • सेटिंग्स संवाद में, प्रोजेक्ट: XXXProject-> प्रोजेक्ट इंटरप्रेटर
  • "जोड़ें" बटन पर क्लिक करें, यह आपको 'उपलब्ध संकुल' संवाद दिखाएगा
  • अपनी लाइब्रेरी खोजें, 'इंस्टॉल पैकेज' पर क्लिक करें
  • फिर, आप सभी आवश्यक पैकेज आप कस्टम 'vev' फ़ोल्डर में स्थापित किया जाएगा।

सेटिंग्स संवाद

का आनंद लें।


0

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

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

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


0

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


0

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


0

मुझे एक ही समस्या थी (पायथन 2.7 लिनक्स), मुझे इसका हल मिल गया है और मैं इसे साझा करना चाहूंगा। मेरे मामले में मेरे पास संरचना थी:

Booklet
-> __init__.py
-> Booklet.py
-> Question.py
default
-> __init_.py
-> main.py

'Main.py' में मैंने सभी संयोजनों को असफल बनाने की कोशिश की थी:

from Booklet import Question
from Question import Question
from Booklet.Question import Question
from Booklet.Question import *
import Booklet.Question
# and many othet various combinations ...

उपाय जितना मैंने सोचा था उससे कहीं अधिक सरल था। मैंने फ़ोल्डर का नाम बदलकर "बुकलेट" को "बुकलेट" में बदल दिया है और यही वह है। अब पायथन कोड को 'main.py' कोड का उपयोग करके सामान्य रूप से वर्ग प्रश्न आयात कर सकता है:

from booklet.Booklet import Booklet
from booklet.Question import Question
from booklet.Question import AnotherClass

इससे मैं यह निष्कर्ष निकाल सकता हूं कि 'बुकलेट' की तरह पैकेज-नेम्स (फोल्डर) को लोअर-केस से शुरू होना चाहिए, अन्यथा पायथन इसे क्लास के नाम और फाइलनाम के साथ भ्रमित करता है।

जाहिरा तौर पर, यह आपकी समस्या नहीं थी, लेकिन जॉन फूही का जवाब बहुत अच्छा है और इस धागे में लगभग कुछ भी है जो इस मुद्दे का कारण बन सकता है। इसलिए, यह एक और बात है और मुझे उम्मीद है कि शायद यह दूसरों की मदद कर सके।


0

मेरे मामले में मैं पैकेज के लिए शामिल था। वास्तविक पैकेज के बजाय फ़ोल्डर को देखें। मैंने पैकेज को शीर्ष स्तर पर कॉपी किया और यह काम किया।


0

यह मेरे लिए काम किया: __init__.pyमूल फ़ोल्डर के अंदर फ़ाइल (आपके मामले में, site-packagesफ़ोल्डर के अंदर ) बनाया गया। और इस तरह आयातित:

from site-packages.toolkit.interface import interface

आशा है कि यह आपके लिए भी उपयोगी होगा!


0

लिनक्स सर्वर में प्रयास करें dos2unix script_name

(सभी को हटा दें (यदि कोई है) pycकमांड के साथ फाइलें find . -name '*.pyc' -delete)

और अगर आप खिड़कियों पर स्क्रिप्ट पर काम करते हैं तो मामले में फिर से दौड़ें


0

मेरे मामले में, मैं sys.path.insert()एक स्थानीय मॉड्यूल आयात करने के लिए उपयोग कर रहा था और module not foundएक अलग पुस्तकालय से प्राप्त कर रहा था । मुझे sys.path.insert()रिपोर्ट के अनुसार आयात को नीचे रखना पड़ा module not found। मुझे लगता है कि सबसे अच्छा अभ्यास sys.path.insert()आपके आयात के नीचे रखना है ।

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