2009-01-28 22 views
16

मैं एक अजगर नौसिखिया हूँ, इसलिए सहन मेरे साथ :)मुझे पाइथन में निम्न त्रुटि क्यों मिल रही है "आयात त्रुटि: कोई मॉड्यूल नामित नहीं है"?

मैं एक फ़ाइल की सामग्री के साथ test.py नामक इस प्रकार है:

test.py 
import sys 
print sys.platform 
print 2 ** 100 

मैं तो दुभाषिया में import test.py फ़ाइल दौड़ा पालन करने के लिए मेरी किताब में एक उदाहरण। जब मैं ऐसा करता हूं, तो मुझे अंत में आयात त्रुटि के साथ आउटपुट मिलता है।

win32 
1267650600228229401496703205376 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named py 

मुझे यह त्रुटि क्यों मिलती है और मैं इसे कैसे ठीक करूं? धन्यवाद!

उत्तर

36

बजाय:

import test.py 

बस लिखें:

import test 

यह test.py मान लिया गया है कि यह फ़ाइल आयात करता है उसी निर्देशिका में है।

5

आयात करते समय आप एक्सटेंशन निर्दिष्ट नहीं करते हैं। बस कार्य करें:

import test 
2

जैसा कि अन्य ने उल्लेख किया है, आपको फ़ाइल आयात को अपने आयात विवरण में रखने की आवश्यकता नहीं है। अनुशंसित पढ़ने Modules section of the Python Tutorial है।

त्रुटि में थोड़ी अधिक पृष्ठभूमि के लिए, दुभाषिया सोचता है कि आप पैकेज के अंदर से py नामक मॉड्यूल आयात करने का प्रयास कर रहे हैं, क्योंकि बिंदु encapsulation इंगित करता है। चूंकि ऐसा कोई मॉड्यूल मौजूद नहीं है (और test isn't even a package!), यह उस त्रुटि को बढ़ाता है।

रूप more in-depth documentation on the import statement में संकेत यह अभी भी py मॉड्यूल है, जो तुम क्यों मान बाहर मुद्रित आयात करने के लिए प्रयास करने से पहले test मॉड्यूल में सभी बयान निष्पादित करता है।

6

यह अजीब दिखने वाली त्रुटि का परिणाम है कि पाइथन मॉड्यूल कैसे आयात करता है। (थोड़ा सरलीकृत)

import test.py 

अजगर सोचता:

अजगर देखता

import module test.

  • search for a test.py in the module search paths
  • execute test.py (where you get your output)
  • import 'test' as name into current namespace

import test.py

  • search for file test/py.py
  • throw ImportError (no module named 'py') found.

क्योंकि अजगर बिंदीदार मॉड्यूल के नाम की अनुमति देता है, यह सिर्फ सोचता है कि आप के भीतर py नाम के एक submodule है test मॉड्यूल, और इसे खोजने की कोशिश की। यह नहीं पता कि आप एक फाइल आयात करने का प्रयास कर रहे हैं।

+0

मुझे लगता है कि शब्दावली तकनीकी रूप से "* मॉड्यूल * नाम '' py'' test' * package * के भीतर है। (हालांकि गलत हो सकता है!) – cdleary

संबंधित मुद्दे