تقنية

badmodules في بايثون: هل هي سجل أخطاء تشغيل؟

استيراد مفقود بدالة غير مستدعاة
تحليل ضمن مجلدنا. [1] [2]

نفحص دالة غير مستدعاة. [1] [2]

الخلاصة السريعة

لا؛ وجود الاسم ليس دليل تشغيل. [1] [2]

  • كتبنا دالة تستورد OWN. [1] [2]
  • حصرنا مسار البحث في المجلد المؤقت. [1] [2]
  • الفحص داخل badmodules يعطي True. [1] [2]
  • تعريف الدالة منفصلًا ينجح؛ استدعاؤها يرفع خطأ الاستيراد. [1] [2]
  • اختبرنا 3.12.14؛ التقرير ليس سجل تنفيذ. [1] [2]

المثال

import modulefinder as m
import tempfile as t
from pathlib import Path
with t.TemporaryDirectory() as d:
 p=Path(d)/'x.py'
 s="def f():\n import OWN"
 p.write_text(s)
 f=m.ModuleFinder(path=[d])
 f.run_script(str(p))
 print('OWN' in f.badmodules)

[1] [2]

الناتج True. لا يحتوي المجلد وحدة OWN. [1] [2]

التحليل والتشغيل

المحلل يفحص كود الدالة المتداخل ويسجل تعذر العثور على الاسم. لم نستدعِ دالة الملف. في فحص تشغيل منفصل، ينجح تعريفها؛ عند استدعائها يظهر ModuleNotFoundError. [1] [2]

تعريف ناجح واستدعاء بخطأ استيراد
تشغيل منفصل. [1] [2]

النطاق

نبحث داخل مجلدنا فقط؛ لا نحكم على التثبيت كله أو كل الاستيرادات الديناميكية. [1] [2]

المراجع

  1. Python: modulefinder
  2. CPython 3.12.14: modulefinder.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.