Iron Python / Iron Ruby EXE
-
06-07-2019 - |
質問
私は常に、スクリプト言語から「本物のexe」を作成するという夢を見てきました。 PythonとRubyのDLRベースの実装が利用可能になりましたが、これは現実に近づいていますか?
「実際のアプリケーション」を作成したい:
- Windowsフォームアプリ
- コンソールアプリ
- Windowsサービス
そして、配布単位をコンパイル済みのexeにします。
これは可能ですか?または、MSは.NETに基づいたスクリプトファイルインタープリターを作成したばかりですか?
これを行う場合、アプリケーション/プロジェクトをどのように構造化しますか? C#とDLRコードのハイブリッドを使用していますか?
解決
IronPythonまたはIronRubyプロジェクトは、dllまたは実行可能ファイルにコンパイルでき、それらを実行する人が関連する.Netフレームワークと依存関係をインストールする必要があるという条件で、あらゆる方法で「実際の」実行可能ファイルになります(依存関係は代わりにデフォルトで同じディレクトリに存在しますが、フレームワークをインストールする必要があります)。 Visual Studioとの統合はまだありませんが、 IronPythonStudio などのプロジェクトでは、無料のVSシェルを使用して効果を上げています。 VS 2010のc#dynamicの依存関係としてのDLRの存在は、Iron *グループからのVSとの統合がより簡単な目標であり、より高い優先度になることを意味するはずです。
結果は決して解釈されず(CILは実行時または必要に応じてngenを介してマシンコードに結合されます)、DLRの特定の側面は、一部のアクションが遅延バインディングと同様の方法で遅延されますが、より強力かつ決定的に単純なインタープリターと比較して、これを比較的高速にするための洗練されたキャッシングメカニズム。
従来解釈されていた多くのスクリプト言語は、独自のVMベースのコンパイル戦略を作成するか、既存の戦略(JVM、.Net CLR、または LLVM )。これにより、多くの一般的なケースでパフォーマンスが大幅に向上するためです。
Iron *言語の場合、MS CLRの基礎としての利点は、結果の実行可能ファイルが、最も一般的なOSファミリの大部分のインストールで「ジャストワーク」することです。多くのオペレーティングシステムでシェルを介して直接/または「実行」をクリックすることにより、jarファイルが「実行可能」ではないJavaとは対照的です。これとは逆に、プラットフォームのサポートはより広いが、必然的にOS統合の多様性が増すJVMやLLVMベースのソリューションと比較して、相互運用性が低下するということです。
他のヒント
Py2Exe を使用して、通常のpythonからexeを作成できます。ただし、Visual Studioまたは SharpDevelop を使用してIronPythonでexeを作成することを妨げるものはないはずです。
Iron *の質問に直接関連するわけではありませんが、Pythonスクリプトからのバイナリが必要な人には興味深いかもしれません: pyinstaller
Windows(32ビットおよび64ビット)、Linux(32ビットおよび64ビット)、およびMac OS X(32ビットのみ)で動作します
1.5から2.7までのPythonのどのバージョンでも動作します