Pythonのプログラムファイルをexe化する方法

PythonファイルはPythonがインストールされている環境でなければ実行できないため、Pythonで作ったプログラムを別の環境で動かしたり、配布するためには別のファイル形式に変換する必要があります。この記事では Windows 環境で動作する「.exe」形式への変換方法を解説します。

目次

実行ファイルとは

これまで作ってきたのは拡張子が「.py」のPythonプログラムファイルですが、これらはPythonがインストールされていないパソコンでは動作しません。

プログラム開発をしない大多数の人のパソコンにはPythonはインストールされていないため、自分の作ったアプリケーションを誰かに使ってもらいたい時は実行形式と呼ばれる形式のファイルに変換して渡す必要があります。

実行形式のファイルは環境ごとに異なりますが、ここではWindows環境で動作する「.exe」形式への変換方法をみていきましょう。

サードパーティライブラリのインストール

Pythonのプログラムファイルを実行形式に変換するにはpyinstallerというツールを使います。

このツールはPython本体のインストール時に付属する標準ライブラリではなく、PyPI(Python Package Index)と呼ばれるサードパーティライブラリを管理している場所からダウンロードする必要があります。

PyPIで管理されているライブラリはpip(The Python Package Installer)というツールを使ってインターネットを経由でインストールできます。

pip自体はPython 3.4以降からデフォルトで付属するようになったためインストールの必要はありません。

それでは実際にpipを使ってpyinstallerをダウンロード・インストールしてみましょう。PyPIからライブラリをインストールするにはコマンドプロンプトを開いて次のコマンドを入力します。

pip install インストールしたいライブラリ名

実際の画面を確認してみましょう。

pipを使ってpyinstallerをインストール

このコマンドを実行すると

pyinstallerのインストール成功

このようにSuccessfully installedに続けてpyinstaller-〇.〇と表示されればインストール成功です。

exeファイルへの変換

pyinstallerを使ってPythonプログラムファイルを実行形式(.exe)に変換してみましょう。

コマンドプロンプトを開き、変換したいファイルと同じディレクトリまで移動して次のコマンドを実行します。

pyinstaller 変換したいpythonのファイル名 --onefile

実際の画面を確認してみましょう。

「python_lessons」フォルダの中の「test.py」というファイルを実行形式に変換してみます。

pyinstallerを使ってtest.pyを実行ファイル(.exe)に変換

ビルド成功

このように色々と処理が走った後、最後に「completed successfully.(正常に完了しました)」と表示されれば実行ファイルへの変換は成功です。

「python_lessons」フォルダの中を確認してみましょう。

「python_lessons」フォルダの中

いくつかのフォルダとファイルが作成されていることがわかります。

変換された実行ファイルはこの中の「dist」というフォルダの中にあります。

実行ファイル「test.exe」

Windowsでは拡張子は通常非表示になっているので、エクスプローラーの表示タブの「ファイル名拡張子」にチェックを入れて確認してみて下さい。

ではダブルクリックで実行してみましょう!中身は Python3で学ぶプログラミングはじめの一歩 の実践演習③の演習問題5で作った勇者と魔王の戦闘ゲームです。

test.exeファイルの実行

ちゃんとプログラムした通りに動作していますね。

ただ1つだけ問題があります。

プログラムは実行が終わると自動的に終了してしまうため、このままでは最後の「魔王を倒した!」または「あなたはしにました」という肝心のメッセージが表示されるのが一瞬だけで、その直後にプログラムが終了してしまいます。

このままではどちらが勝ったのかわからないので、プログラムの最後に次のコードを記述して、ユーザーがいずれかのキーを押すまでは入力待ちの状態で待機させるようにしておきましょう。

input("いずれかのキーを押してください")
このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。