تقنية

py_compile في بايثون: هل نجاح الترجمة يعني نجاح التشغيل؟

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

افصل إنشاء الشيفرة الوسيطة عن تشغيل المصدر. [1] [2]

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

تولد py_compile.compile ملف الشيفرة الوسيطة؛ نجاحها ليس اختبار تشغيل. [1] [2]

  • ننشئ ملفًا مؤقتًا يتضمن raise RuntimeError. [1] [2]
  • صياغته صالحة؛ الترجمة تنجح. [1] [2]
  • فحص وجود ملف الناتج تعيد True. [1] [2]
  • تشغيل المصدر نفسه يرفع RuntimeError. [1] [2]
  • اختبرنا 3.12.14؛ doraise=True يخص أخطاء الترجمة. [1] [2]

المثال

import py_compile as c
import tempfile as t
from pathlib import Path
with t.TemporaryDirectory() as d:
 p=Path(d)/'x.py'
 s="raise RuntimeError('ran')"
 p.write_text(s)
 out=c.compile(str(p),doraise=True)
 print(Path(out).is_file())

[1] [2]

المخرج: True؛ لم يرفع الاستدعاء خطأ المصدر. [1] [2]

ماذا اختبرنا؟

تعيد الدالة مسار الملف الناتج. وجوده يثبت إنشاءه هنا، لا نجاح البرنامج. [1] [2]

بعد الترجمة شغّلنا المصدر منفصلًا؛ ظهر RuntimeError: ran. [1] [2]

الترجمة تنجح والتشغيل يرفع RuntimeError
شغّلنا المصدر نفسه في عملية منفصلة. [1] [2]

النطاق

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

المراجع

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

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