みやまのアトリエ

スマホアプリ開発 ペンタブ備忘録 お絵描き

pyinstallerを使って、Pythonコードを「.exe」ファイルに変換する

pyinstallerって?

  Python言語で記述したプログラムをWindowsの実行ファイル(.exe)ファイルに変換してくれるツールです。

 Pythonで記述したプログラムは、Python環境をインストールしたパソコン上では実行できますが、Python環境をインストールしていないパソコン上では実行できません。作ったプログラムを配布したり沢山のパソコンで動かしたりする場合は、このpyinstallerを使って実行ファイルにした方が便利です。

 

pyinstallerのインストール方法

  Pythonをインストールしてある方は、以下のコマンドでpyinstallerをインストールすることが出来ます。

 

pip install pyinstaller

 

pyinstallerの実行方法

pyinstaller (pythonファイル名).py (引数)--onefile --noconsole

 

pyinstaller Receiver.py --onefile --noconsole

 

引数に「--onefile」と入力しておくと、関連するファイルを1つにまとめることができます。

--noconsoleはプログラムを実行した際のコンソール画面(真っ黒な画面)を消すことが出来ます。

 

 

pyinstallerの実行結果

  Pythonファイルと同じフォルダにファイルが多数生成されたかと思います。

f:id:M_Atelier:20180719001316p:plain

 そのうち「dist」フォルダ内に、「(Pythonファイル名).exe」が生成されています。

f:id:M_Atelier:20180719001351p:plain

 

 この.exe実行ファイル単体で実行させることができるようになっています。

 

 なお、インストールされているPython環境が32bit版の場合は32bit用のexeファイル、64bit版の場合は64bit用のexeファイルが生成されるようです。 

 Windows本体が64bit版であれば32bit/64bit両方のexeファイルが動きますが、32bit版Windowsでは64bitのexeファイルは動かせないのでご注意ください。

 

発生したエラーについて

 私の環境では、.exeファイルは生成できましたが、実行時に以下のエラーが発生しました。

Fatal Python error: initfsencoding: unable to load the file system codec zipimport.ZipImportError: can't find module 'encodings'
Current thread 0x00002d2c (most recent call first):

 

 原因はPython本体のバージョンが3.7であった点でした。私が試した時点では3.7をサポートしていなかったようなので、python 3.7をアンインストール後、python3.6をインストールし直したところ、正常に実行できるようになりました。

 

 また、なかなか無いと思いますが、Pythonコード中でモジュールをimportしている場合、そのモジュールがpyinstallerを実行するPython環境にインストールされていないとエラーが起こるようです。PyCharm等の開発環境を使用していると出会うかもしれません。

 

以上です~(/・ω・)/