2012-05-29 9 views
6

मुझे नहीं पता कि समस्या के साथ पिचर्म कुछ करने के लिए है या नहीं, या अगर यह मुझे नोब है।अन्य पैकेजों से पायथन मॉड्यूल आयात करने में परेशानी (pycharm अनसुलझा संदर्भ देता है)

यहाँ मेरी फ़ोल्डर लेआउट और तीन कोड फ़ाइलों का स्क्रीनशॉट है:

screenshot

मैं खिड़कियों पर Pycharm उपयोग कर रहा हूँ और "my_working_directory" मेरे कार्य निर्देशिका है। आप स्क्रीनशॉट में देख सकते हैं कि mod1.py "package2.mod2 से" को "अनसुलझा संदर्भ" के रूप में रेखांकित किया गया है।

मैं जब मैं mod1.py को चलाने के लिए प्रयास मिलती है:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py 
Traceback (most recent call last): 
    File "C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py", line 1, in <module> 
    from package2.mod2 import SomeClass 
ImportError: No module named package2.mod2 

मैं जब मैं main.py चलाएँ:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/main.py 
hi 

मुझे समझ नहीं आता क्यों एक काम करता है और अन्य नहीं ।

मुख्य समस्या यह है कि पिचर्म मुझे कोई ऑटो पूर्ण नहीं देता है और mod1 से यह पैकेज 2 का पता नहीं लगा सकता है। यह एक बड़ी समस्या है क्योंकि पैकेज 1 मेरा व्यू पैकेज है, पैकेज 2 मेरे मॉडल या यूटिल या lib पैकेज (एक बड़े मॉडल व्यू कंट्रोलर में) है। (उदाहरण https://github.com/coto/gae-boilerplate/blob/master/web/handlers.py pycharm lib से किसी भी का पता नहीं लगा रहा है। आयात? कथन। (अनसुलझे संदर्भ देना)

कोई भी जानता है कि क्या हो रहा है? क्या यह पैकेज आयात करने का सबसे अच्छा तरीका है? क्या मुझे उम्मीद करने की उम्मीद है स्वत: पूर्ण के लिए

"my_working_directory" एक और init .py फ़ाइल बनाने के द्वारा एक पैकेज में किया जाना चाहिए

+1

सोचें कि आपको इसे अपने साथ जोड़ना होगा पायथन पथ आप मुख्य रूप से पैकेज 1 देख सकते हैं, लेकिन जब आप mod1 आयात करते हैं तो आप mod1 में हैं, यह वहां से आयात 2 से पैकेज 2 नहीं देख सकता क्योंकि यह मूल फ़ोल्डर में है, पैकेज 1 में नहीं। – GP89

+1

@ GP89 "इसे अपने पायथन पथ में जोड़ें", "यह" क्या है? सी: \ उपयोगकर्ता \ रॉबर्ट \ PycharmProjects \ play \ my_working_directory \? यह मेरे लिए यह जोड़ने के लिए मेरे आईडीई का काम भी होना चाहिए? या मेरी सभी परियोजनाओं के लिए मुझे कंप्रेसर> गुण> उन्नत सेटिंग्स> पर्यावरण चर के तहत मेरी विंडोज़ पथ सेटिंग्स के साथ गड़बड़ करनी चाहिए –

+4

आह, मुझे पिचर्म> सेटिंग्स> प्रोजेक्ट स्ट्रक्चर के तहत मिला, मुझे प्रोजेक्ट रूट को/play/play से बदलना पड़ा /कार्यकारी डाइरेक्टरी !!! मुझे यह समझने में मदद करने के लिए बहुत कुछ धन्यवाद। –

उत्तर

2

ऐसा नहीं है कि सी हो सकता है?/उपयोगकर्ताओं/रॉबर्ट/PycharmProjects/खेल अपने %PYTHON_PATH% पर नहीं है

+0

हाय जैकोब, मुझे लगता है कि आप कुछ पर हो सकते हैं। मैंने mod1.py और main.py पर प्रिंट sys.path जोड़ा। तब मैंने mod1.py चलाया और पथ रिकॉर्ड किया। तब मैंने main.py चलाया और पथ दर्ज किया। दो पथ सेटों का अंतर यह है: सेट (['सी: \\ उपयोगकर्ता \\ रॉबर्ट \\ PycharmProjects \\ play \\ my_working_directory \\ package1']) सेट (['C: \\ उपयोगकर्ता \\ रॉबर्ट \ यदि "प्ले" मैं में :: \ PycharmProjects \\ \\ my_working_directory mod1 में path1 = sys.path मैं के लिए path1 में खेलने ']) –

+0

मैं प्रिंट मैं C: \ Users \ रॉबर्ट \ PycharmProjects \ खेलने \ my_working_directory \ package1 सी: \ उपयोगकर्ता \ रॉबर्ट \ PycharmProjects \ play –

+0

मुख्य में।py मैं: मैं के लिए Path2 में: अगर "प्ले" मैं में: प्रिंट मैं C: \ Users \ रॉबर्ट \ PycharmProjects \ खेलने \ my_working_directory C: \ Users \ रॉबर्ट \ PycharmProjects \ खेलने –

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