سؤال

لقد كان لدي هذا الحلم دائمًا بإنشاء "exe حقيقي" من لغة البرمجة النصية.مع توفر تطبيقات Python وRuby المستندة إلى DLR، هل يقترب هذا من الواقع؟

أرغب في إنشاء "تطبيق حقيقي":

  • تطبيق نماذج Windows
  • تطبيق وحدة التحكم
  • خدمة ويندوز

وتكون وحدة التوزيع عبارة عن ملف exe مترجم.

هل هذا ممكن؟أو هل قام MS للتو بإنشاء مترجمين فوريين لملفات البرامج النصية استنادًا إلى .NET؟

إذا كنت تفعل ذلك، فكيف تقوم بتنظيم تطبيقاتك/مشاريعك؟هل تستخدم مزيجًا من كود C# وDLR؟

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

المحلول

يمكن تجميع مشروع IronPython أو IronRuby إلى ملف dll أو ملف قابل للتنفيذ بشكل جيد وسيكون بمثابة ملفات تنفيذية "حقيقية" بكل الطرق بشرط أن يكون لدى الشخص الذي يقوم بتشغيلها إطار عمل .Net ذي الصلة وتبعيات مثبتة (قد تكون التبعيات موجودة في ملف .Net) نفس الدليل افتراضيًا بدلاً من ذلك ولكن يجب تثبيت إطار العمل).التكامل مع Visual Studio لا يزال غير موجود ولكن هناك مشاريع مثل IronPythonStudio استخدم VS Shell المجاني لتحقيق تأثير جيد.إن وجود DLR باعتباره تبعية لديناميكية c# في VS 2010 يجب أن يعني أن التكامل مع VS من مجموعات Iron* يصبح هدفًا أسهل وأولوية أعلى.

لا يتم تفسير النتيجة بأي حال من الأحوال (يتم نقل CIL إلى كود الجهاز في وقت التشغيل أو عبر ngen إذا رغبت في ذلك) وتعني جوانب معينة من DLR أن بعض الإجراءات يتم تأجيلها بطريقة مشابهة للربط المتأخر ولكن بشكل أكثر قوة وحاسمة مع بعض آليات التخزين المؤقت المتطورة للسماح بذلك أن يكون سريعًا نسبيًا مقارنة بالمترجمين الفوريين الساذجين.

تقوم العديد من لغات البرمجة النصية المفسرة تقليديًا بإنشاء إستراتيجيات التجميع الخاصة بها المستندة إلى VM أو الاستفادة من الاستراتيجيات الموجودة (مثل JVM أو .Net CLR أو الاستراتيجيات المفتوحة مثل LLVM) لأن هذا يؤدي إلى زيادات كبيرة في الأداء في العديد من الحالات الشائعة.

في حالة لغات Iron*، تتمثل فائدة MS CLR كأساس في أن الملفات التنفيذية الناتجة "تعمل فقط" على الغالبية العظمى من عمليات التثبيت لعائلة أنظمة التشغيل الأكثر شيوعًا.على النقيض من Java حيث لا يكون ملف jar "قابلاً للتشغيل" عن طريق النقر مباشرة / أو "التنفيذ" عبر Shell في العديد من أنظمة التشغيل.الجانب الآخر من ذلك هو أن هذا يقلل من إمكانية التشغيل البيني مقارنةً بالحل القائم على JVM أو LLVM حيث يكون دعم النظام الأساسي أوسع ولكنه حتمًا أكثر تنوعًا في تكامل نظام التشغيل.

نصائح أخرى

يمكنك إنشاء ملف exe من لغة بايثون العادية باستخدام py2Exe.ولكن لا ينبغي أن يكون هناك أي شيء يمنعك من إنشاء ملفات exes باستخدام IronPython باستخدام Visual Studio أو SharpDevelop

على الرغم من عدم ارتباطه مباشرة بسؤال الحديد*، إلا أنه قد يكون مثيرًا للاهتمام بالنسبة لشخص يريد ثنائيات من نصوص بايثون: pyinstaller

يعمل تحت أنظمة Windows (32 بت و64 بت)، وLinux (32 بت و64 بت)، وMac OS X (32 بت فقط)

يعمل تحت أي إصدار من Python من 1.5 إلى 2.7

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