E
py2exe のインストール
py2exeモジュールを使用するために、それをインストールする必要があります。pip
を使ってインストールしましょう。
$ pip install py2exe
Pythonスクリプトを.exeに変換する
まず、コンソールにテキストを出力するプログラムを書いてみましょう。
import math
print("Hannibal ante Portas")
print(factorial(4))
Windowsのコマンドラインで以下のコマンドを実行して、ディレクトリ(exampDir
)を作成し、すでに書いたコードをそのディレクトリに移動して、最後に実行します。
$ mkdir exampDir
$ move example.py exampDir
$ cd exampDir
$ py example.py
このように出力されるはずです。
Hannibal ante Portas
24
スクリプトを実行ファイルにする前に必ずテストして、エラーがあってもそれがソースコードに起因するものでないことを確認してください。
セットアップとコンフィギュレーション
同じフォルダに setup.py
というファイルを作成します。ここには、プログラムをどのようにコンパイルするかという設定の詳細を記述します。このファイルには、とりあえず2行のコードを書いておきます。
from distutils.core import setup # Need this to handle modules
import py2exe
import math # We have to import all modules used in our program
setup(console=['example.py']) # Calls setup function to indicate that we're dealing with a single console application
もし、グラフィカルなUIを持つアプリを扱うのであれば、console
をwindows
に置き換えるでしょう。
setup(windows=['example.py'])
コマンドプロンプトを管理者として開き、先程のディレクトリに移動して setup.py
ファイルを実行します。
$ cd exampDir
$ python setup.py py2exe
running py2exe
*** searching for required modules ***
*** parsing results ***
...
dist フォルダ
すべてが正しく行われた場合、dist
というサブディレクトリが作成されるはずです。その中には、あなたのプログラムに応じたいくつかの異なるファイルがあり、そのうちの一つが example.exe
であるはずです。コンソールから実行するには、次のコマンドを実行します。
$ example
すると、ラテン語の引用文と、それに続く4!の値が表示されます。
Hannibal ante Portas
24
あるいは、ダブルクリックすれば、コンソールで実行されます。
すべてのファイルをバンドルしたい場合は、 bundle_files
と compressed
を追加し、 zipfile
を None に設定します。
from distutils.core import setup
import py2exe
setup(
options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
console = [{'script': "example.py"}],
zipfile = None,
)
そして、.exe ファイルを生成するためのコマンドを再実行します。
これで、エンドユーザーは自分のローカルマシンに何の知識も前提条件もインストールせずに、スクリプトを実行できるようになります。
トラブルシューティング
.pyファイルを
.exe` ファイルに変換する際のエラーはよくあることなので、よくあるバグと解決策を列挙します。
py2exe を使用した後に不足した DLLs を修正する方法
py2exeでよくある問題は .dll
-s が見つからないことです。
DLL は “dynamic-link library” の略で、単にバグを作るためにあるわけではありません。DLLには、実行中にプログラムが必要とするコード、データ、リソースが含まれています。
ということです。
DLLは、プログラム実行時に必要となるコードやデータ、リソースが含まれています。
.exe`を実行した後、次のようなシステムエラーが発生した場合。
The program can't start because something.dll is missing from your computer. Try reinstalling the program to fix this problem.
または、コマンドラインに次のように表示されます。
ImportError: (DLL load failed: The specified module could not be found.)
解決策は、不足している .dll
を見つけて、それを dist フォルダに貼り付けることです。これを行うには、2つの方法があります。
-
- コンピュータからそのファイルを探して、コピーする。ほとんどの場合、これでうまくいきます。
-
- 不足している
.dll
をオンラインで探し、ダウンロードする。怪しいウェブサイトからダウンロードしないようにしてください。
- 不足している
py2exe を使って 32/64-bit 実行形式を生成するには?
64-bit 実行形式を作るには、デバイスに 64-bit Python をインストールします。32ビット版も同様です。
Linux または Mac での py2exe の使用方法
py2exe` は Windows 独自のフォーマットである .exe ファイルを作成することを目的としているため、Linux や Mac ではサポートされていません。Mac と Linux の両方で Windows 仮想マシンをダウンロードするか、Wine を使うか、Linux では Pyinstaller、Mac では py2app のような別のツールを使うことができます。
結論
PythonプロジェクトをWindowsデバイス上で簡単に実行できるようにするためには、実行ファイルを生成する必要があります。Pyinstaller, auto-py-to-exe, cx_Freeze, py2exe などの様々なツールを使用することができます。
バイナリファイルはDLLを使用することがあるので、プロジェクトにそれらを含めることを確認してください。