سكربتات Python (محرّك Pyodide)
اختيار Python لسكربت يشغّله في محرّك مضمَّن وفق قواعد العزل نفسها المطبَّقة على JavaScript. والمحرّك يُنزَّل مرّةً واحدة، بنقرة، ثم يعمل بعد ذلك دون اتصال بالكامل.
Senzoukria · التوثيق · آخر تحديث: سبتمبر 2026
أين تجده
- الموضع
- صفحة البرمجة النصية ← Language ← Python، ثم شريط «Python engine»
- التنزيل
- ستّة ملفّات، نحو 16.4 ميغابايت في المجموع، تُجلب مرّةً واحدة
- المضمَّن
- numpy، بصيغة الـ wheel المطابقة لواجهة المحرّك الثنائية
- ميزانية الإقلاع
- 120 ثانية للإقلاع؛ وللتنزيل ميزانيته الخاصة وهي 600 ثانية
- ميزانية السكربت
- ثانيتان لكل تشغيل، مثل JavaScript تمامًا
ما الذي يفعله
تُختار اللغة لكل سكربت على حدة وتُحفظ معه. وتتلقّى اللغتان البيانات نفسها وتعيدان الأشكال نفسها، فالسكربت المنقول من إحداهما إلى الأخرى يجد طريقه: فأعمدة الشمعة معروضة بأسمائها، ومساعدات الحساب تحتفظ بالأسماء نفسها، وبُناة المخرجات تتقابل واحدًا بواحد.
وإقلاع المحرّك حالة من الدرجة الأولى، معروضة على شريطها الخاص، ولا تُخلَط بتشغيل سكربت أبدًا. وهذا التمييز مهمّ: فالمحرّك يستغرق ثوانيَ للإقلاع بينما لتشغيل السكربت ميزانية ثانيتين، فطيّ أحدهما في الآخر كان سيجعل كل سكربت Python صحيح يبدو حلقةً لانهائية.
ولا يُنزَّل شيء من تلقاء نفسه. فالتثبيت نقرة؛ والإقلاع التلقائي لا يقع إلا حين تكون الملفّات حاضرةً أصلًا.
حالات المحرّك
| الحالة | الافتراضي | ما الذي يغيّره |
|---|---|---|
| Not installed | الحال الابتدائية | يعرض «Install the Python engine» ويذكر حجم التنزيل لمرّة واحدة. |
| Downloading | — | يعرض نسبة مئوية ويعرض «Cancel the download». |
| Starting | — | المحرّك يُقلع؛ والسكربتات تنتظر بدل أن تخفق. |
| Engine ready | — | يعرض النسخة والمللي ثانية التي استغرقها الإقلاع، ويعرض «Remove the engine». |
| Engine unavailable | — | يذكر أن المحرّك لم يُقلع، مع الرسالة الخام، ويعرض «Try again». وسكربتات JavaScript غير متأثّرة. |
| ملاحظة العمل دون اتصال | دائمًا | بعد التثبيت، يعمل المحرّك دون اتصال بالكامل — ولا يُرسَل أي سكربت ولا أي بيانات إلى أي مكان. |
عدم تطابق اللغة
لصق سكربت Python في مسوّدة لا تزال مضبوطة على JavaScript كان ينتج خطأ صياغة يشير إلى سطر اعتباطي، مع نصيحة عن console.log لمن يكتب Python. والصفحة اليوم تتحقّق ممّا إذا كانت الشفرة تناقض اللغة المعلَنة وتقول ذلك، مع زرّ ينتقل إلى اللغة المكتشَفة.
والفحص ضيّق عمدًا: فهو لا يبحث إلا عن علامات تُعدّ أخطاء صياغة صريحة في اللغة الأخرى، ويصمت حين يحمل ملفّ علامات اللغتين معًا — فسكربت مترجَم نصف ترجمة لا شيء مفيدًا يقوله. وإغفال كشفٍ لا يعيدك إلا إلى الرسالة الغامضة القديمة؛ أمّا اختراع كشفٍ فسيرسلك لتغيير لغة كانت صحيحة.
الحدود والمزالق
- تبديل اللغة لا يترجم شفرتك: فهي تبقى كما كُتبت تمامًا ولن تعمل حتى تعيد كتابتها.
- وملفّات المحرّك تُجلب من مُرحِّل المنتج نفسه، وهو المصدر البعيد الوحيد الذي تسمح به سياسة محتوى التطبيق.
- ونسخة المحرّك مثبَّتة وتُقابَل بالثنائي المترجَم؛ وخلط النسخ يُرفض بدل إنتاج انهيارات غير مقروءة.
- والاختبار الرجعي لاستراتيجية Python يشغّل الحلقة في جهة Python بدل عبور حدّ اللغة مرّةً عند كل شمعة، ويقارن اختبار تكافؤ صفقاتِها بحلقة JavaScript شمعةً بشمعة. وprint() تذهب إلى السجلّ مسبوقةً بالشمعة الجارية.
صفحات ذات صلة
- نظرة عامة على صفحة البرمجة النصية
- البرمجة النصية: كتابة استراتيجية
- معرض قوالب السكربتات
- الاختبار الرجعي
هذه الصفحة بلغات أخرى
أسئلة شائعة
- هل أحتاج تثبيت Python على حاسوبي؟
- لا. فالمحرّك مضمَّن ويُنزّله التطبيق مرّةً واحدة. وهو لا يستعمل تثبيت Python على النظام ولا يحتاجه.
- أي مكتبات متاحة؟
- المكتبة القياسية إضافةً إلى numpy، التي تأتي بصيغة الـ wheel المطابقة لواجهة المحرّك الثنائية. ولا وصول إلى الشبكة من داخل البيئة المعزولة، فلا يمكن جلب حزم أثناء التشغيل.
- لماذا يخفق سكربت Python عندي بخطأ صياغة على سطر غير موجود؟
- هذه بصمة عدم تطابق اللغة: فقد أُلحق غلاف باللغة الأخرى بمصدرك. بدّل لغة السكربت وأعد التشغيل.