मेरे पास निम्नलिखित के समान एक निर्देशिका संरचना है
meta_project
project1
__init__.py
lib
module.py
__init__.py
notebook_folder
notebook.jpynb
जब में काम कर रहा notebook.jpynb
है, तो मैं एक समारोह का उपयोग करने के एक रिश्तेदार आयात इस्तेमाल करने की कोशिश function()
में module.py
साथ:
from ..project1.lib.module import function
मुझे निम्नलिखित त्रुटि मिलती है:
SystemError Traceback (most recent call last)
<ipython-input-7-6393744d93ab> in <module>()
----> 1 from ..project1.lib.module import function
SystemError: Parent module '' not loaded, cannot perform relative import
क्या रिश्तेदार आयात का उपयोग करके इसे प्राप्त करने का कोई तरीका है?
ध्यान दें, नोटबुक सर्वर को meta_project
डायरेक्ट्री के स्तर पर त्वरित किया जाता है , इसलिए इसमें उन फ़ाइलों की जानकारी तक पहुंच होनी चाहिए।
ध्यान दें, यह भी कि कम से कम मूल रूप से इरादा project1
के रूप में एक मॉड्यूल के रूप में नहीं सोचा गया था और इसलिए एक __init__.py
फ़ाइल नहीं है , यह सिर्फ एक फ़ाइल-सिस्टम निर्देशिका के रूप में था। यदि समस्या के समाधान के लिए इसे एक मॉड्यूल के रूप में और एक __init__.py
फ़ाइल (यहां तक कि एक रिक्त) सहित उपचार की आवश्यकता होती है जो ठीक है, लेकिन ऐसा करना समस्या को हल करने के लिए पर्याप्त नहीं है।
मैं मशीनों और सापेक्ष आयातों के बीच इस निर्देशिका को साझा करता हूं, जिससे मुझे हर जगह एक ही कोड का उपयोग करने की अनुमति मिलती है, और मैं अक्सर त्वरित प्रोटोटाइप के लिए नोटबुक का उपयोग करता हूं, इसलिए ऐसे सुझाव जिनमें एक साथ निरपेक्ष पथ हैकिंग शामिल है, सहायक होने की संभावना नहीं है।
संपादित करें: यह इसके विपरीत है पायथन 3 में सापेक्ष आयात के , जो सामान्य रूप से पायथन 3 में सापेक्ष आयात के बारे में बात करता है और विशेष रूप से - एक पैकेज निर्देशिका के भीतर से एक स्क्रिप्ट चला रहा है। यह एक जुपिटर नोटबुक के भीतर काम करने के साथ एक अन्य मॉड्यूल में एक स्थानीय मॉड्यूल में एक फ़ंक्शन को कॉल करने की कोशिश करना है जिसमें दोनों अलग-अलग सामान्य और विशेष पहलू हैं।
lib
डायरेक्टरी में।
__init__
आपके पैकेज निर्देशिका में कोई फाइल है?