• 0

كيف أحل مشكلة إعادة استدعاء وحدة في بايثون؟

أريد أن أعيد استدعاء وحدة معينة في سكربت بايثون لكن كلما أقوم بإعادة الاستدعاء احصل على رسالة الخطأ التالية:

NameError: name 'reload' is not defined

على الرغم من أن نفس السكربت اشتغل على حاسوبي الآخر دون مشاكل فما سبب هذه المشكلة؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

أعتقد أن حل هذه المشكلة بسيط للغاية، فإذا كنت تستخدم الإصدار الثاني من بايثون فستكون التعليمة البرمجية لإعادة تحميل وحدة معينة كالتالي:

reload(my.module)

لكن في الإصدارات الحديثة للبايثون حدثت عدّة تغييرات في بايثون فمثلا لو كنت تستخدم الإصدار 3.2 و 3.3 فيجب عليك في هذه الحالة استدعاء مكتبة imp ومن ثم استخدام دالة reload، لإعادة تحميل الوحدة كما في المثال التالي:

import imp  
imp.reload(module)  

وفي الإصدار 3.4 فما فوق يجب استدعاء دالة reload من وحدة importlib.
أي أن حل هذه المشكلة هو التأكد من إصدار بايثون الذي يعمل عليه السكربت.
المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن