web-dev-qa-db-ja.com

Python 3アプリを.exeにコンパイルするにはどうすればよいですか?

Pythonアプリを.exe?私はtkinterでプログラムを作成し、他の人が使用できるようにする方法を考えていました。 Python 3.3を使用します。少し検索しましたが、何も見つかりませんでした。

22
Samir Chahine

cx_Freezeはこれを行いますが、多くの依存関係を持つフォルダーを作成します。 py2exe がこれを実行し、-bundle-files 0オプションを使用して、たった1つのEXEを作成します。これは、おそらくあなたの質問に対する最善の解決策です。

更新:py2exeが「検出」に問題があるサードパーティモジュールに遭遇した後、kotlet schabowyが以下に示すように、pyinstallerに移動しました。どちらも豊富なドキュメントがあり、コマンドラインパラメーターで実行できる.exeが含まれていますが、pyinstallerがデバッグや頭を悩ますことなく処理できないスクリプトをまだコンパイルしていません。

インタプリタからデフォルトを使用して.exeを作成するために使用する単純な便利な関数を次に示します(もちろん、バッチなども問題ありません)。

import subprocess,os
def exe(pyfile,dest="",creator=r"C:\Python34\Scripts\pyinstaller.exe",ico=r"C:\my icons\favicon.ico",noconsole=False):
    insert=""
    if dest: insert+='--distpath ""'.format(dest)
    else: insert+='--distpath "" '.format(os.path.split(pyfile)[0])
    if ico: insert+=' --icon="{}" '.format(ico)
    if noconsole: insert+=' --noconsole '
    runstring='"{creator}" "{pyfile}" {insert} -F'.format(**locals())
    subprocess.check_output(runstring)
15
gss

PyInstaller が最適に機能することがわかりました。たとえば、すべてを1つのファイルexeにパックできる多くのオプションがあります。

速度を上げるために Cython と一緒に使用するのが大好きです。

9
kotlet schabowy

cx_Freeze を使用できます。ガイドがあります こちら

4
Andy G

Pyinstaller を使用します。インストール後、プロジェクトが存在するディレクトリでターミナルを開きます。

  1. $ pyinstaller script1.py script2.py ...(script1、script2などは、プロジェクトで使用されるすべてのスクリプトです。)

  2. コマンドが完了したら、distフォルダーを開き、サブディレクトリを入力します。実行可能ファイルがあります。

それが役に立てば幸い。

1
user4340135