IronPythonでスタンドアロンexeを作成する

場合によっては、実行可能ファイルとして配布される小さなプログラムを作成する必要がありますが、そのプログラムに大量のファイルを含めることは望ましくありません。 1つのexe-shnikとそれだけですが、同時に、書くのにそれほど時間がかからないようにしたいです(簡単な言語)。

py2exeまたはcx_FreezeにバンドルされているCPythonは、非常に高速に動作しますが、多くのファイルと大きなプログラムサイズという望ましい結果を提供しません。 組み込みのpycコンパイラを使用して、IronPythonで優れたソリューションを得ることができました。 IDEさえ必要ありませんでした。 カットの下の詳細。



すべてがシンプルであることが判明しました



IronPythonが既にインストールされているとしましょう(注: Juralisのおかげで、バージョン2.7.2以降で受付が機能します 。 また、次のソースコードがあります。

import clr clr.AddReference("System.Windows.Forms") from System.Windows.Forms import Application, Form class HabrForm(Form): def __init__(self): self.Text = 'Habr!' self.Name = 'Habr!' form = HabrForm() Application.Run(form)
      
      





mini.pyファイルに保存します。 コンソールからプログラムフォルダーに移動し、次のコマンドを入力します。

 ipy.exe C:\IronPython\Tools\Scripts\pyc.py /target:winexe /main:mini.py /standalone
      
      



ターゲットをexeでインストールする場合は、デバッグに便利なコンソールプログラムを入手してください。 dllを作成することもできます。



コンパイラは次のようなものを出力します。

 Input Files: Output: mini Target: WindowApplication Platform: ILOnly Machine: I386 Threading: STA Compiling... Generating stand alone executable Embedding Microsoft.Dynamic 1.1.0.20 Embedding Microsoft.Scripting 1.1.0.20 Embedding IronPython 2.7.0.40 Embedding IronPython.Modules 2.7.0.40 Embedding IronPython.SQLite 2.7.0.40 Embedding IronPython.Wpf 2.7.0.40 Saved to mini
      
      





Exe-Schnickの準備ができました! このアセンブリには標準ライブラリがないことに注意してください。 そしてそれは良いことです。 高速.NETライブラリでclrモジュールのみを使用してプログラムをビルドできます。



標準ライブラリを接続する



標準ライブラリが必要な場合は、2つの接続方法があります。 1つは、Libフォルダー全体を1つのdllにコンパイルし、AddReferenceを追加することです。 既製のソリューションがありますが、これはプログラムの動作が遅すぎる方法です!



私は反対に行きました。 IronPythonには組み込みのsysモジュールがあり、モジュールローダーはzipからモジュールを読み取ることができるため、ソリューションは明らかになりました:Libフォルダーの内容を(IronPythonフォルダーから)パックし、exeファイルの隣に配置して、次のコードを追加します。

 import sys sys.path.append(r'.\Lib.zip')
      
      





これで、jsonやurllibなどの他のモジュールをインポートできます。

それだけです、見た目がどれほど素晴らしいか見てください:








All Articles