py2exeによるPythonスクリプトからの実行ファイルの作成

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を持つアプリを扱うのであれば、consolewindowsに置き換えるでしょう。

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_filescompressed を追加し、 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つの方法があります。

    1. コンピュータからそのファイルを探して、コピーする。ほとんどの場合、これでうまくいきます。
    1. 不足している .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を使用することがあるので、プロジェクトにそれらを含めることを確認してください。

タイトルとURLをコピーしました