اذهب إلى المحتوى

السؤال

نشر

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

NameError: name 'reload' is not defined

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

Recommended Posts

  • 1
نشر

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

reload(my.module)

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

import imp  
imp.reload(module)  

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...