আমার নিম্নলিখিত ডিরেক্টরিগুলির মতো ডিরেক্টরি কাঠামো রয়েছে
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__
আপনার প্যাকেজ ডিরেক্টরিতে কোন ফাইল আছে?