Domanda

Ho sempre avuto questo sogno di creare un "vero exe" da un linguaggio di scripting. Con la disponibilità di implementazioni basate su DLR di Python e Ruby, questo si sta avvicinando alla realtà?

Vorrei creare una 'vera applicazione':

  • Un'app di Windows Form
  • Un'app console
  • Un servizio di Windows

E fare in modo che l'unità di distribuzione sia un exe compilato.

È possibile? Oppure MS ha appena creato interpreti di file di script basati su .NET?

Se lo stai facendo, come stai strutturando le tue applicazioni / progetti? Stai utilizzando un ibrido di codice C # e DLR?

È stato utile?

Soluzione

Un progetto IronPython o IronRuby può essere compilato in una dll o eseguibile bene e sarà eseguibile 'reale' in tutti i modi con la condizione che la persona che li esegue deve avere il framework .Net pertinente e le dipendenze installate (le dipendenze possono essere presente nella stessa directory per impostazione predefinita, ma è necessario installare il framework). L'integrazione con Visual Studio non è ancora presente ma progetti come IronPythonStudio utilizzano la VS Shell gratuita con buoni risultati. L'esistenza del DLR come dipendenza per la dinamica c # in VS 2010 dovrebbe significare che l'integrazione con VS dei gruppi Iron * diventa un obiettivo più facile e una priorità più elevata.

Il risultato non viene in alcun modo interpretato (il CIL viene immesso nel codice macchina in fase di esecuzione o tramite ngen se lo si desidera) e alcuni aspetti del DLR significano che alcune azioni sono rinviate in modo simile al latebinding ma in modo più potente e cruciale con alcune sofisticati meccanismi di memorizzazione nella cache per consentire che ciò sia relativamente veloce rispetto agli interpreti ingenui.

Molti linguaggi di script interpretati tradizionalmente stanno creando le proprie strategie di compilazione basate su VM o sfruttano quelle esistenti (come JVM, CLR .Net o aperte come LLVM ) poiché ciò porta a significativi aumenti delle prestazioni in molti casi comuni.

Nel caso delle lingue Iron * il vantaggio di MS CLR come base è che gli eseguibili risultanti 'Just Work' sulla maggior parte delle installazioni della famiglia di sistemi operativi più comuni. Contrariamente a Java in cui un file jar non è "eseguibile" facendo clic direttamente / o "eseguendo" tramite la shell in molti sistemi operativi. Il rovescio della medaglia è che ciò riduce l'interoperabilità rispetto a una soluzione basata su JVM o LLVM in cui il supporto della piattaforma è più ampio ma, inevitabilmente, più diversificato nell'integrazione del sistema operativo.

Altri suggerimenti

Puoi creare exe da Python normale usando Py2Exe . Ma non dovrebbe esserci nulla che ti impedisca di creare exe con IronPython utilizzando Visual Studio o SharpDevelop

sebbene non sia direttamente correlato alla domanda iron *, potrebbe essere interessante per chi desidera binari da script Python: pyinstaller

funziona con Windows (32-bit e 64-bit), Linux (32-bit e 64-bit) e Mac OS X (solo 32-bit)

funziona con qualsiasi versione di Python dalla 1.5 alla 2.7

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top