هل يمكن استخدام Pypy/rpython لإنتاج مستقل صغير قابل للتنفيذ؟

StackOverflow https://stackoverflow.com/questions/4251964

سؤال

(أو ، "يمكن استخدام pypy/rpython لتجميع/ترجمة python إلى c/c ++ دون الحاجة إلى وقت تشغيل بيثون?")

لقد حاولت فهم Pypy مع Rpython و Python ، وركضه وتجميعه وترجمته ، وفشلت إلى حد ما.

لدي مشروع بيثون افتراضي (للنوافذ) ؛ أرغب في الحفاظ على حجمها ، بترتيب مائة كيلوغرام (ONO) بدلاً من عدة ميغابايت التي يستلزم استخدام PY2EXE (بعد UPX). هل يمكنني استخدام Pypy1 بأي حال من الأحوال لإنتاج قابلة للتنفيذ مستقل والتي لا تعتمد على Python26.dll؟ إذا استطعت ، هل تحتاج إلى اتباع قيود Rpython مثل for فقط العمل على أنواع بنيت ، أم أنها بناء جملة Python الكامل؟

أدرك أنه إذا كان من الممكن القيام بذلك ، فمن المؤكد أنني لم أستطع استخدام وحدات C من Python مباشرة.


1 (منذ وقت السؤال ، أصبح الموقف أكثر وضوحًا ، ويصدر هذا الجزء من أدوات الأدوات بشكل أكثر وضوحًا على أنه Rpython بدلاً من Pypy ؛ لم يكن الأمر كذلك في عام 2010.)

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

المحلول

نعم ، يمكن أن تنتج Pypy التنفيذيين المستقلين من رمز Rpython. هذا يعني أنك تحتاج إلى اتباع جميع قواعد Rpython المحرجة عندما يتعلق الأمر بكتابة رمز. من غير المرجح أن يعمل رمز Python الخاص بك تمامًا ، وعادة ما يكون تنفيذ رمز Python الحالي غير ممتع. لن يجعل التنفيذيين صغيرين مثل C ، ولكن على سبيل المثال Rpystone Target (من Pypy/Translator/Doal) باستخدام Boehm GC هو 80K على 64 بت بعد تجريده.

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