「自作の Python ファイルを exeファイルにして簡単に実行したい!!!」
そんな思いからこの記事は作成されました。どーもTakeです。
この記事ではPythonで自作の py ファイルを exec ファイルにする方法について簡単に解説します。
Python ファイルを exe 化するには、Python ファイルを一度コンパイルする必要があります。
※ コンパイル・・・コンピュータが実行可能な形式(機械語)に変換する処理のこと
Python ファイルをコンパイルしたいだけなら、
コマンドラインに「python -m compileall <ファイル名>」と入力すれば、コンパイル可能です。
しかし「exe」ファイルを作りたい場合は、「pyinstaller」モジュールをインポートし、
そのモジュールから「pyinstaller <ファイル名> --onefile」とコマンド実行する必要があります。
- python -m compileall <ファイル名> ・・・ Python標準ライブラリ、「exe」ファイルはできません。代わりに「pyc」ファイルができます。
- pyinstaller <ファイル名> --onefile ・・・「pip」でインストールする必要あり、「exe」ファイル作成できます!
この記事では、「compileall 」と「pyinstaller 」の二つの手法について簡単に解説します。
またそれに加え、私がコンパイルさせるときにうまくいかなかった点についても解説します。
- 実行した画面がぱっと出てぱっと消える!
- 日本語を含むソースファイルだとうまくコンパイルできない!
標準ライブラリ「compileall 」でコンパイル
まず下記の「tmp.py」ファイルをコンパイルしたいと思います。
「tmp.py」ファイルの中身は下記になります。
1 2 |
print("Hello World") input("入力待ち") |
ただ「Hello World」と表示させるだけのファイルです。
あとはPython を実行するコマンドラインに下記を入力すればOKです。
1 |
python -m compileall tmp.py |
これだけです。「tmp.py」ファイルが置かれているフォルダ(ディレクトリ)をご確認ください。
「__pycache__」というフォルダが作成されますので、その中を確認します。
「tmp.cpython-37.pyc」が作成されますので、それをダブルクリックします。
すると下記のように「tmp.py」ファイルが実行されます。
これだけです。
「tmp.cpython-37.pyc」でいいよ~って人はこのやり方でOKだと思います。
ですが、どうしても「exe」化したい!という人は次の方法をご確認ください。
「pyinstaller」をインストールして exe ファイルをつくる
先程と同様に下記の「tmp.py」ファイルをコンパイルしたいと思います。
まずは「pyinstaller 」をインストールする必要があります。
下記コマンドを実行してください。
1 |
pip install pyinstaller |
インストールが完了すれば、下記コマンドを実行します。
1 |
pyinstaller tmp.py --onefile |
すると下記のようなファイルとフォルダが作成されます。
「dist」フォルダ下に「tmp.exe」ファイルが作成されていることが確認できます。
「tmp.exe」をダブルクリックし、処理が実行されることを確認できます。
実行した画面がぱっと出てぱっと消える!
ダブルクリックして実行したら下の画面が夏の花火のようにぱっと出てぱっと消える!
そんな人いませんか?
これはコンパイルしたファイルは実行されているんですが、実行が終わると画面がすぐに閉じるからです。
もしこの画面を確認したい場合は、ソースコード内で処理を待機させるコードを追加する必要があります。
下記は先程例にあげました「tmp.py」ファイルのソースコードです。
1 2 |
print("Hello World") input("入力待ち") |
ここに「input」という記述があります。
「input」はキーボード入力を待つ処理のことで、わざと入れています。
こうすることで画面が消えずキーボード入力が完了するまで処理を待つようにしてくれます。
日本語を含むソースファイルだとうまくコンパイルできない!
コンパイルしようとしたときにこんな感じのエラーがでてきました。
1 2 3 |
File "c:\users\XXXXX\anaconda3\lib\codecs.py", line 322, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 29: invalid start byte |
エラーを見る限り、文字コードがいけてない感じ。。。
そんなときは下記のように Python ファイルの文字コードを「UTF-8」に変更して再度実行すればOKです。
私の場合、Python ファイルの文字コードが「SJIS」だったので、
それを「UTF-8」に変更したらうまくコンパイルできました!
最後に
いかがでしたでしょうか?
この記事では、Pythonで自作の py ファイルを exec ファイルにする方法についてを解説しました。
この記事が開発のお役に立てれば幸いです。
ではでは。