मैंने एक मॉड्यूल ( my_mod.py
फ़ोल्डर में रहने वाली एक फ़ाइल फ़ाइल my_module
) लिखा है । वर्तमान में, मैं उस फ़ाइल में काम कर रहा हूं cool_script.py
जो फ़ोल्डर में रहती है cur_proj
। मैंने फ़ाइल - ओपन का उपयोग करके PyCharm में फ़ोल्डर खोला है (और मुझे लगता है, इसलिए, यह PyCharm प्रोजेक्ट है)।
ProjectView (CMD-7) में, मैं अपना प्रोजेक्ट cur_proj
(लाल रंग में) और "बाहरी पुस्तकालयों" के तहत देख सकता हूँ my_module
। Cool_script.py में, मैं लिख सकता हूं
from my_module import my_mod as mm
और PyCharm भी my_mod के लिए सुझाव देता है। अब तक सब ठीक है।
हालाँकि, जब मैं cool_script.py चलाने की कोशिश करता हूं, तो PyCharm मुझे बताता है "my_module नाम का कोई मॉड्यूल नहीं"
यह मुझे अजीब लगता है, क्योंकि
ए) टर्मिनल में (ओएस 10.10.2), अजगर में, मैं मॉड्यूल को कोई समस्या नहीं आयात कर सकता हूं - PbTHONPATH में .bashrc में एक समान प्रविष्टि है।
बी) Pyharm में - सेटिंग्स - प्रोजेक्ट cur_proj - प्रोजेक्ट इंटरप्रेटर - अजगर इंटरप्रेटर के आगे CogWheel - चयनित इंटरप्रिटर आइकन के लिए अधिक पथ दिखाएं - PYTHONPALH से पथ दिखाई देते हैं (जैसा कि मुझे लगता है कि उन्हें चाहिए)
इसलिए, जब मैं cool_script.py चलाने का प्रयास करता हूं तो मुझे त्रुटि क्यों मिलती है? - मुझे क्या याद आ रहा है?
टिप्पणियाँ:
- मैं cool_script.py के शीर्ष पर एक अलग / विशेष अजगर संस्करण घोषित नहीं कर रहा हूँ
- मैंने सुनिश्चित किया कि रास्ता
my_module
सही है - मैं डाल
__init__.py
फ़ाइलें (खाली फ़ाइलें) दोनों मेंmy_module
और मेंcur_proj
- मैं उपयोग नहीं कर रहा हूं
virtualenv
परिशिष्ट 2015-फरवरी -25
जब मैं अपने वर्तमान प्रोजेक्ट के लिए PyCharm में चला जाता हूं - कॉन्फ़िगर संपादन संपादित करता हूं, तो दो विकल्प हैं जो एक चेक मार्क के साथ चुने गए हैं: " PYTHONPATH में सामग्री जड़ें जोड़ें " और " PYTHONPATH के लिए स्रोत जड़ें जोड़ें "। जब मेरे पास दोनों अनियंत्रित हैं, तो मैं अपने मॉड्यूल को लोड कर सकता हूं।
तो यह अब काम करता है - लेकिन क्यों ?
आगे के प्रश्न उभरे:
- "सामग्री जड़ें" क्या हैं और "स्रोत जड़ें" क्या हैं? और PYTHONPATH में कुछ जोड़ने से यह किसी तरह टूट क्यों जाता है?
- क्या मुझे उन सभी विकल्पों को हर समय अनचेक करना चाहिए (इसलिए चूक में भी, न केवल परियोजना विशिष्ट कॉन्फ़िगरेशन (रन / डिबग कॉन्फ़िगरेशन डायलॉग के बाएं पैनल)?
Enable Django Support
सेटिंग्स Languages & Frameworks -> Django
में अनचेक है । यह एक django कंसोल खोल रहा था जो आयात के मुद्दों का कारण बना।
from foldername.mymodule import mymethod
। एक और बात जो मुझे करनी है वह यह है कि सभी फ़ोल्डरों में खाली _init .py फोल्डर को जोड़ना है, जिसका उपयोग आप अपने मॉड्यूल में करने के लिए करेंगे ताकि यदिfrom parentfolder.childfolder.mymodule ...
आपको दो फ़ोल्डरों में इनट की आवश्यकता होगी। इस बात पर निर्भर करता है कि फ़ोल्डर्स एक दूसरे के सापेक्ष कहाँ स्थित हैं, आपको शीर्ष स्तर के पैकेज की आवश्यकता हो सकती हैsys.path
जैसा कि इस उत्तर