नोट: हल किया गया। यह पता चला कि मैं एक ही मॉड्यूल के पिछले संस्करण को आयात कर रहा था।पायथन नाम त्रुटि: नाम '<anything>' परिभाषित नहीं किया गया है (लेकिन यह है!)
स्टैक ओवरव्लो पर समान विषयों को ढूंढना आसान है, जहां कोई नेमरर में भाग गया। लेकिन अधिकांश प्रश्न विशिष्ट मॉड्यूल से निपटते हैं और समाधान मॉड्यूल को अद्यतन करने के लिए अक्सर होता है।
मेरे मामले में, मैं एक मॉड्यूल से एक फ़ंक्शन आयात करने की कोशिश कर रहा हूं जिसे मैंने स्वयं लिखा था। मॉड्यूल को इन्फ्रापी नाम दिया गया है, और यह निश्चित रूप से sys.path पर है। इन्फ्रापी में एक विशेष फ़ंक्शन (listToText कहा जाता है) एक नाम त्रुटि देता है, लेकिन केवल तभी जब मैं इसे किसी अन्य स्क्रिप्ट में आयात करने का प्रयास करता हूं। इन्फ्रापी के अंदर, if __name__=='__main__':
के तहत, सूची टोटेक्स्ट फ़ंक्शन बस ठीक काम करता है। इन्फ्रापी से मैं बिना किसी समस्या के अन्य कार्यों को आयात कर सकता हूं। मेरी स्क्रिप्ट में from InfraPy import *
सहित कोई भी त्रुटि वापस नहीं आती है जब तक कि मैं सूचीToText फ़ंक्शन का उपयोग करने का प्रयास नहीं करता।
यह कैसे हो सकता है?
एक विशेष फ़ंक्शन को आयात करने से एक समान मॉड्यूल में अन्य सभी फ़ंक्शंस आयात करते समय, ठीक है?
MacOSX 10.6 पर अजगर 2.6 का उपयोग करना भी .NET 4.0
धन्यवाद के लिए एक ही त्रुटि विंडोज 7 पर स्क्रिप्ट चलाने, IronPython 2.6 का उपयोग कर का सामना करना पड़ा।
यदि अन्य विवरण हैं जो आपको लगता है कि इसे हल करने में मददगार होगा, तो मुझे उन्हें प्रदान करने में खुशी होगी।
के रूप में अनुरोध किया है, यहाँ समारोह परिभाषा InfraPy के अंदर है:
def listToText(inputList, folder=None, outputName='list.txt'):
'''
Creates a text file from a list (with each list item on a separate line). May be placed in any given folder, but will otherwise be created in the working directory of the python interpreter.
'''
fname = outputName
if folder != None:
fname = folder+'/'+fname
f = open(fname, 'w')
for file in inputList:
f.write(file+'\n')
f.close()
इस समारोह के ऊपर और if __name__=='__main__':
की मैं कोशिश की स्क्रिप्ट के संबंध में चारों ओर InfraPy चलती गया है बाहर परिभाषित किया गया है। सबसे परेशान स्थिति यह है कि जब इन्फ्रापी उसी फ़ोल्डर में स्क्रिप्ट के रूप में है, और मैं from InfraPy import listToText
का उपयोग करके आयात करता हूं, तो मुझे यह त्रुटि प्राप्त होती है: NameError: name listToText is not defined
। दोबारा, अन्य कार्य ठीक आयात करते हैं, वे सभी इन्फ्रापी में if __name__=='__main__':
के बाहर परिभाषित किए गए हैं।
कृपया प्राप्त होने वाले सटीक त्रुटि संदेश को पोस्ट करें। – Amber
क्या आप __InfraPy__ मॉड्यूल के स्रोत कोड को खरीद सकते हैं, यह यहां सहायक हो सकता है; लेकिन मेरा पहला अनुमान यह है कि हो सकता है कि आप फंक्शन __listToText__ को ब्लॉक 'if __name __ ==' __ मुख्य __ 'के पक्ष में परिभाषित करें:' क्या आप? ' – mouad
मेरा सुझाव है कि आप मॉड्यूल में कार्यों और/या कक्षाओं की परिभाषाएं पोस्ट करें (यानी, 'def' या 'class' लाइनें, लेकिन निकायों के बिना), कम से कम एक जो मॉड्यूल के बाहर से सुलभ है, और जो नहीं है। –