ऐसा लगता है कि अजगर 3 में रिश्तेदार आयात के बारे में पहले से ही यहां कुछ सवाल हैं, लेकिन उनमें से कई के बाद भी मुझे अपने मुद्दे का जवाब नहीं मिला। तो यहाँ सवाल है।
मेरे पास नीचे दिखाया गया एक पैकेज है
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
और मेरे पास टेस्टोस्टेरोन में एक ही लाइन है:
from ..A import foo
अब, मैं फ़ोल्डर में package
हूं, और मैं चलाता हूं
python -m test_A.test
मुझे संदेश मिला
"ValueError: attempted relative import beyond top-level package"
लेकिन अगर मैं मूल फ़ोल्डर में package
हूं, उदाहरण के लिए, मैं चलाता हूं:
cd ..
python -m package.test_A.test
सब कुछ ठीक है।
अब मेरा प्रश्न है:
जब मैं फ़ोल्डर में package
हूं, और मैं test_A उप-पैकेज के अंदर मॉड्यूल चलाता test_A.test
हूं, तो मेरी समझ के आधार पर, ..A
केवल एक स्तर तक जाता है, जो अभी भी package
फ़ोल्डर के भीतर है , यह संदेश क्यों कहता है beyond top-level package
। वास्तव में क्या कारण है जो इस त्रुटि संदेश का कारण बनता है?