2011-10-30 18 views
11

पर एक फ़ोल्डर से एक वर्ग के आयात मैं इसएक अन्य स्तर

/ 
/crawl.py 
/crawl/__init__.py 
/crawl/john.py 
/tests/test_john.py 

की तरह एक अजगर आवेदन मैं क्या करने की कोशिश कर रहा हूँ क्या, इकाई परीक्षण test_john.py जो john.py उपयोग करने की आवश्यकता चलाया जाता है, लेकिन यह किसी अन्य फ़ोल्डर में है।

मेरे tests/test_john.py मैं इस मिल जब मैं इसे चलाने

Traceback (most recent call last): 
    File "test_john.py", line 2, in <module> 
    from john import John 
ImportError: No module named john 

तो मैं कैसे एक वर्ग आयात कर सकते हैं क्रॉल फ़ोल्डर से, ....

+0

आप crawl.john आयात John' से 'कोशिश या (उल्लेख http://stackoverflow.com/questions/1054271/how-to-import-a-python- ..crawl.john आयात John' से' की कोशिश कर सकते क्लास-द-इन-ए-ए-डायरेक्टरी-उपरोक्त) –

उत्तर

11

अपने रूट फ़ोल्डर अपने PYTHONPATH में है, तो और आप इसे एक आयात योग्य पैकेज बनाने के इस प्रकार है:

/__init__.py 
/crawl.py 
/crawl/__init__.py 
/crawl/john.py 
/tests/__init__.py 
/tests/test_john.py 

आप कर सकते हैं:

from crawl.john import John 

या

from ..crawl.john import John 
+0

लगता है कि रूट फ़ोल्डर मेरे पायथन पथ में नहीं है। मैंने सोचा कि यह सीडब्ल्यूडी को पायथनपैथ में जोड़ सकता है लेकिन नहीं। ऐसा करने का सबसे अच्छा तरीका है? – Wizzard

+0

जो आपकी कॉन्फ़िगरेशन पर निर्भर करता है। विंडोज़ में, मेरे पैकेज और लाइब्रेरीज़ के लिए मैं बस साइट-पैकेज में फ़ोल्डर.ps के नाम से साइट.pth फ़ाइल जोड़ता हूं। – joaquin

2

अपने OS इसका समर्थन करता है, test निर्देशिका में ../crawl करने के लिए एक प्रतीकात्मक कड़ी रखा और फिर from crawl.john import John का उपयोग करें।

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