2009-04-01 13 views
16

pythonスクリプトからスタンドアロンの.exeファイルを作成する方法はありますか? py2exeで生成された実行可能ファイルはpythonXX.dllでのみ実行できます。 私はpythonランタイムライブラリをインストールする必要はありません完全にスタンドアロンの.exeを取得したいと思います。 リンクの問題のように見えますが、代わりに静的ライブラリを使用すると、未使用のシンボルを削除するためにストリップを適用すると便利です。pythonXX.dllを必要としないスタンドアロンのWindowsのexeファイルを作成する

ありがとうございました。

アレッサンドロ

答えて

17

py2exeの最新バージョンでこれを行うことができます...
setup.pyファイル(キー部分は 'bundle_files':1)に下記のコードを追加してください。

インストールにTkInterパッケージを含めるには、 'includes'キーを使用します。

distutils.core.setup(
     windows=[ 
      {'script': 'yourmodule.py', 
      'icon_resources': [(1, 'moduleicon.ico')] 
      } 
     ], 
     zipfile=None, 
     options={'py2exe':{ 
         'includes': ['tkinter'], 
         'bundle_files': 1 
         } 
     } 
) 
+0

解決策はうまくいきますが、exeファイルにtkinterを含めるとどうなりますか? distディレクトリから移動すると実行可能ファイルがクラッシュしますが、 "tcl"ディレクトリが存在するdistの内部でうまく動作します。 – alexroat

+0

ooops、申し訳ありませんが、オプション 'bundle_files':1は、distディレクトリまたは外部からexeを起動する両方で動作していません。 exeにもtclライブラリを含める方法はありますか?おかげさまで – alexroat

+0

他のパッケージをどのように組み込むかを示すためにoptions変数を更新しました。 –

1

これはそれを行うための最善の方法はありませんが、内部の.exeファイルと.dllファイルの両方で実行可能なSFXアーカイブを使用して、そしてそれは、二重だとき、あなたの.exeファイルを実行するためにそれを設定することを検討可能性がありますクリックした

5

.pydまたは.dllのPythonモジュールを使用する場合、Windowsのダイナミックリンカーがどのように動作するため、静的ライブラリを使用することはできません。 WindowsにロードされたDLLはシンボルスペースを自動的に実行可能ファイルと共有しないので、Pythonシンボルを含む別個のDLLが必要です。

2

別の解決策は、python.dllとpython.dllを含めて、pythonとその内部にインストールされているすべての依存関係を使用して単一のexeファイルを作成することです。ラッパーにはちょっとした魔法がありますが、うまくいくだけです。詳細はこちら:

http://code.google.com/p/pylunch/downloads/detail?name=PyLunch-0.2.pdf

4

単一の実行を持っていることのあなたの目的は、など、ダウンロード/メール送信を容易にするためであるならば、私はInno Setupを使用してpy2exe出力をバンドルすることによって、これを解決してきました。これは実際には単一の実行可能ファイルよりも優れています。これは、実行可能ファイルをいくつかのディレクトリにドロップするのではなく、適切に動作するWindowsアプリケーションがアンインストーラを提供し、プログラムの追加と削除のアプレットなどに表示されるためです。これはあなたのためです。

関連する問題