はじめに
どうもMizokeiです。
pythonでスクリプトを書いている際に、他の人に作ったスクリプトを渡したい場合があるかと思います。
でも、相手のPCや環境に
- pythonがインストールされていなかったら?
- 適切なバージョンやライブラリが院sつオールされていなかったら?
たった一つのスクリプトを渡すのに、環境を構築するのは面倒ですよね。そんな時、作ったpythonスクリプトをexeファイルに変換し、他の環境でも実行しやすい形式に変換できると便利です。
今回の記事の実行環境は以下です。
実行環境
- Windows10 64bit
- Python 3.7
今回使用するライブラリ
pythonスクリプトを実行可能ファイルexeに変換するにあたり、使用するライブラリは、以下です。
- pyinstaller
pyinstallerをインストールする
pyinstallerのインストールコマンドは、以下です。
0 1 2 |
py -m pip install pyinstaller |
私Mizokeiの環境では、以下のような記載となりました。みなさまの環境では、少し異なるかもしれませんが、末尾が「Successfully」と表示されれば、特に問題はないでしょう。
pipは、インストールしようとしているpyinstallerライブラリに必要な依存ライブラリも、一緒にインストールしてくれるため、その他のライブラリも同時に取得する場合があります。
pythonライブラリのインストール方法は、以下の記事で簡単に紹介しています。社内で利用する場合の、proxy使用時のコマンドなども記載してありますので、参考にご覧ください。
とりあえずプログラムを書く
今回は、pythonスクリプトをexe化するのが目的のため、pythonスクリプトのプログラム自体は、簡単に書きます。
不要かと思いますが、一応説明しておきますね。
0 1 2 3 4 5 6 7 8 9 10 |
#メイン処理 if __name__ == '__main__': #起動ログ print('Hello Python World!!') #すぐに終了してしまうため、入力待ちを作る print('何かキーを押して下さい。') input() |
起動時の出力として、「Hello Python World!!」を表示させています。
0 1 2 3 |
#起動ログ print('Hello Python World!!') |
このままだと、実行してすぐにプログラムが終了し、ウィンドウも閉じてしまうため、以下のinput()メソッドで、入力処理を行い、待機させています。
0 1 2 3 4 |
#すぐに終了してしまうため、入力待ちを作る print('何かキーを押して下さい。') input() |
さっそくexe化してみる
それでは、さっそくexe化してみましょう。以下のコマンドを実行するだけで、作ったpythonスクリプトをexe形式に変換することができます。
0 1 2 |
pyinstaller スクリプトファイル名 --onefile |
私の環境の場合ですと、以下のコマンドとなりました。サンプルプログラムは、helloworld.pyで作成しています。
0 1 2 |
pyinstaller ./helloworld.py --onefile |
以下のコマンドでも、実行可能なのですが、「–onefile」オプションを付けることで、exeファイル1つにまとめてくれます。使用しない場合は、複数のファイルが出力される場合があり面倒なので今回は考えていません。
0 1 2 |
pyinstaller スクリプトファイル名 |
exe化した様子
pyinstallerコマンドを実行すると、なにやらたくさんの画面出力が行われます。pythonスクリプトの長さによっては、数分かかる場合もあります。
最後に以下のような表示が出れば、exe化完了です。
実行した階層を確認すると「dist」フォルダが作成されているかと思います。中を開くと、「helloworld.exe」が作成されていますね。
確認のためにexeを実行してみる
ちゃんとexeに変換できているか、exeファイルを実行してみます。ダブルクリックでも実行できるかと思います。
以下のように、想定したpythonスクリプトの動作が確認できました。
今回は、input()メソッドを使用して、入力待ちにしていますが、入力待機させない場合は、プログラムの終了とともにウィンドウは閉じてしまうので注意が必要です。
0 1 2 3 4 |
#すぐに終了してしまうため、入力待ちを作る print('何かキーを押して下さい。') input() |
今回作成したスクリプトの全文
さて、今回作成したスクリプトの全文です。pyinstallerを使用することが目的でしたので、簡単なコードですが、参考までにご利用ください。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# -*- coding: utf-8 -*- ''' exe化するためのHello Worldスクリプト。 ''' #メイン処理 if __name__ == '__main__': #起動ログ print('Hello Python World!!') #すぐに終了してしまうため、入力待ちを作る print('何かキーを押して下さい。') input() |
この記事が誰かのお役に立てれば幸いです。それでは。
関連記事
【Python】ピクセル値を操作して画像を作成してみよう【画像処理】
【Python×業務自動化】Excelを起動する【RPA】
【Python超入門】クラスを作成してみよう