मैं सिर्फ अपने प्रश्न के डोपेलगेगर के अपने उत्तर पर अधिक ध्यान आकर्षित करना चाहता हूं। मुझे यह त्रुटि थी, और स्थिति यह है:
आप 'strateg.py' नामक मॉड्यूल से फ़ंक्शन/क्लास एक्स आयात करने का प्रयास कर रहे हैं।
दुर्भाग्यवश आपने रणनीति नामक एक पायथन पैकेज निर्देशिका भी बनाई है, दूसरे शब्दों में आपको 'रणनीति' नामक एक निर्देशिका मिली है, जिसमें '____init___.py' नामक निर्देशिका 'रणनीति' में कम से कम एक फ़ाइल है।
root folder\
strategy.py (contains function/class called X)
strategy\
__init__.py
तो आप तथ्य यह है कि आप अजगर पैकेज निर्देशिका बना लिया है के बारे में भूल है, और इसलिए
from strategy import X
की तरह, 'जड़' निर्देशिका में कुछ वर्ग या समारोह फ़ाइल
strategy.py
में परिभाषित आयात करने का प्रयास
आपको तब क्या मिलता है Python error: ImportError: cannot import name X
त्रुटि है।
डोपेलगेंजर नोट्स के रूप में वास्तविक समस्या यह है कि पाइथन व्याख्याकर्ता आपके द्वारा बनाई गई पैकेज निर्देशिका को प्राथमिकता देता है, और पैकेज निर्देशिका में एक्स नामक फ़ाइल/मॉड्यूल की खोज करता है, और वास्तविक मॉड्यूल strategy.py
को अनदेखा करता है, और उसमें फ़ंक्शन/कक्षा X जिसमें आप वास्तव में खोज रहे हैं।
यह वही है जो आप चाहते हैं और चाहते हैं कि आप पाइथन पैकेज पर प्रलेखन पढ़ते हैं, लेकिन यदि आपने अपना दिमाग आधा रास्ते बदल दिया है, तो आप अपने सिर को खरोंच कर सकते हैं।
स्रोत
2011-09-18 09:56:30
मान लीजिए कि मैं है/path/मेरी PYTHONPATH पर, तो मैं /path/akismet/akismet.py (जोड़ने __init__.py) के साथ की कोशिश की, और /path/akismet.py साथ की कोशिश की जाने न तो काम किया – Doppelganger
@Doppelganger: "Akismet.py" स्क्रिप्ट को "/ path /" में रखें और उस पथ को अपने PythonPATH में जोड़ें। यदि आपके पास PYTHONPATH में एकाधिक निर्देशिकाएं हैं तो सुनिश्चित करें कि आप कोलन को विभाजक के रूप में उपयोग करें। रीबूट करें और यह जांचने के लिए 'set' कमांड का उपयोग करें कि PYTHONPATH सही है या नहीं। तो यह निश्चित रूप से काम करना चाहिए। – AndiDog
ठीक है, यहां वास्तविक मुद्दा यह था कि मैंने akismet फ़ोल्डर को _init_.py के अंदर जोड़ने वाले पैकेज के रूप में चिह्नित किया था, मैंने उस फ़ोल्डर को हटा दिया और यह ठीक काम करता है। – Doppelganger