2009-06-18 8 views
7

J'ai toujours rêvé de créer un «vrai exe» à partir d'un langage de script. Avec les implémentations de Python et Ruby basées sur le DLR, cela se rapproche-t-il de la réalité?Iron Python/Iron Ruby EXE

Je voudrais créer une 'application réelle':

  • A Windows Forms App
  • Console App
  • Un service Windows

Et que l'unité de la distribution être un exe compilé.

Est-ce possible? Ou MS a-t-il créé des interpréteurs de fichiers script basés sur .NET?

Si vous faites cela, comment structurez-vous vos applications/projets? Utilisez-vous un hybride de code C# et DLR?

Répondre

4

Un projet IronPython ou IronRuby peut très bien être compilé dans une DLL ou un exécutable et sera de vrais exécutables dans tous les sens avec le à condition que la personne qui les exécute ait le framework et les dépendances .Net installés (les dépendances peuvent être présentes dans le même répertoire par défaut mais le framework doit être installé). L'intégration avec Visual Studio n'est toujours pas là mais des projets comme IronPythonStudio utilisent le VS Shell gratuit pour faire bonne effet. L'existence du DLR en tant que dépendance de C# dynamic dans VS 2010 devrait signifier que l'intégration avec VS des groupes Iron * devient un objectif plus facile et une priorité plus élevée. Le résultat n'est en aucune manière interprété (le CIL est jeté dans le code machine à l'exécution ou par l'intermédiaire de ngen si désiré) et certains aspects du DLR signifient que certaines actions sont différées de manière similaire à latebinding mais plus puissamment et certains mécanismes de mise en cache sophistiqués pour permettre à cela d'être relativement rapide par rapport aux interprètes naïfs. Beaucoup de langages de script traditionnellement interprétés créent leurs propres stratégies de compilation basées sur VM ou s'appuient sur des stratégies existantes (comme la JVM, le .NET CLR ou les ouverts comme le LLVM) car cela conduit à des augmentations de performances significatives dans de nombreux cas courants.

Dans le cas des langages Iron *, l'avantage du MS CLR est que les exécutables résultants fonctionnent sur la grande majorité des installations de la famille OS la plus courante. Contraste à Java où un fichier jar n'est pas 'exécutable' en cliquant directement/ou en 'exécutant' via le shell dans de nombreux systèmes d'exploitation. Le revers de la médaille est que cela réduit l'interopérabilité par rapport à une solution basée sur JVM ou LLVM où la prise en charge de la plate-forme est plus large mais, inévitablement, plus diversifiée dans l'intégration du système d'exploitation.

+0

Pouvez-vous fournir des documents ou une procédure pour cela?Il ne semble pas que vous pouvez Python "File-> New Project" dans Visual Studio, donc un travail supplémentaire est nécessaire. – JoshRivers

+0

L'intégration de VS n'est toujours pas là (j'ajouterai une note à cet effet) mais vous pouvez utiliser http://www.codeplex.com/IronPythonStudio pour obtenir un environnement de type VS (il utilise le VS Shell réduit comme base – ShuggyCoUk

+0

Quelle est la méthode actuelle pour obtenir le code DLR compilé dans vos exécutables? J'ai seulement pu trouver le lien dans la réponse ci-dessous, et il semble seulement se rapporter au code bêta. – JoshRivers

1

Vous pouvez créer des exe à partir de python standard en utilisant Py2Exe. Mais rien ne devrait vous empêcher de créer des exes avec IronPython en utilisant Visual Studio ou SharpDevelop

-1

mais pas directement lié à la question de fer *, pourrait être intéressant pour quelqu'un binaires de scripts python qui veulent: pyinstaller

fonctionne sous Windows (32 bits et 64 bits), Linux (32 bits et 64- bit) et Mac OS X (32 bits uniquement)

fonctionne sous toute version de Python de 1,5 jusqu'à 2,7

+1

obtenu * rien * à faire avec la question – oma

+0

si vous lisez la première phrase du message de la question, vous verrez ce que mon poste a à voir avec la question ... – Matus