سؤال

أنا أعمل من داخل غلاف Ipython وغالبًا ما أحتاج إلى إعادة تحميل ملفات البرنامج النصي التي تحتوي على وظائف البناء.

داخل بلدي الرئيسي ، لدي:

def myreload (): execfile ("main.py") execfile ("otherfile.py")

يعمل استدعاء MyReload () بشكل جيد إذا كنت قد ركضت بالفعل في جلسة Ipython نفسها ، أوامر execfile مباشرة.

ومع ذلك ، لسبب ما ، إذا كانت الجلسة جديدة ودعت للتو execfile ("main.py") ، فإن myreload () لا تجعل الوظائف من داخل otherfile.py متاحة. لا يرمي أي خطأ رغم ذلك.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

وظائف إنشاء نطاق جديد. execfile() يدير البرنامج النصي في النطاق الحالي. ما تفعله لن يعمل.

نصائح أخرى

إذا كنت تسعى لتعلم الاستخدام الصحيح الفعلي لـ Ipython (أي في الوضع التفاعلي) ، ثم يجب عليك استخدام الأوامر السحرية مثل:

%run

و

%edit

تحقق من المساعدة لتلك الوظائف مع %run?. هذا يوفر أمثلة واضحة.

أنظر أيضا http://ipython.org/ipython-doc/stable/interactive/tutorial.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top