あどりぶろぐ=adli"B"log

表情認識を研究する海なし県民のブログ

Pyhtonのスクリプトをコマンド1つで実行ファイル(.exe)化する

f:id:shubarie:20171116023627p:plain

 

はじめに

Pythonスクリプトを別のPCでも気軽に動かしたい

Pythonスクリプトを実行ファイル化して配布したい

こういうこと、ありませんか?

 

僕は、他言語を勉強するのが億劫でついついなんでもPythonで作ってしまいます。

 

わりとなんでも作れてしまうのがPythonのいいところではあるのですが、さすがにスクリプト言語だし実行ファイル化するのは無理だよな~。

 

そう思っていた時期もありました。

 

「起動が遅い」「ファイルサイズが大きくなる」といったデメリットはあるものの、Pythonスクリプトを実行ファイル化することはできます

 

しかもコマンド1つで!

 

今回使うのはPyinstallerです。

PyInstallerはPythonプログラムをWindowsLinuxMac OS XFreeBSDSolarisAIXスタンドアロンの実行可能ファイルにフリーズ(パッケージ化)するプログラムです。

公式サイトより引用

ステップ1 Pyinstallerをインストール

今回はAnaconda3の仮想環境上でPyinstallerを使います。

Anacondaを導入していない方は、以下の記事で最も簡単な環境構築方法を解説しているので、参考にしてください。

adliblog.hatenablog.com

仮想環境をactivateにした後、以下のコマンドでAnaconda上のPyinstallerパッケージを探してください。自分のOSに適合したパッケージが見つかるはずです。

anaconda search -t conda pyinstaller

 

良さげなパッケージを見つけたら、以下のコマンドでパッケージのインストール方法を閲覧してください。僕は「conda-forge/pyinstaller」という名前のパッケージを選択しました。

anaconda show conda-forge/pyinstaller

 

一番下のほうにインストールのコマンドが表示されているので、それを実行することでPyinstallerと共に、依存関係のあるライブラリも同時にインストールされます。

conda install --channel https://conda.anaconda.org/conda-forge pyinstaller

ステップ2 Pyinstallerを使ってスクリプトを実行ファイル化

スクリプトを実行ファイル化するのはコマンド1つで出来てしまいます。

pyinstaller yourprogram.py

 

コンソールを起動してほしくない場合や、ファイルを一つにまとめたい場合、古い実行ファイルを削除したい場合は以下のようにオプションを付けましょう。

pyinstaller yourprogram.py --noconsole --onefile --clean

 

肝心の実行ファイルは、カレントディレクトリ配下のdistディレクトリの中に生成されていますので、煮るなり焼くなり好きにすると良いでしょう。

おまけ トラブルシューティング

導入時に実際に起こった問題と、その対策をメモします。

トラブル1 実行ファイル起動時にエラーが出る

 実行ファイルを起動するとこんなエラーが…

f:id:shubarie:20171116021121p:plain

実行時のエラー

なんかQtのプラグインが見つからなかったとかなんとか言ってます…

 

ggったら解決方法が見つかりました。

https://plus.google.com/+rikitoy/posts/1bVKdQy33dz

 

どうやら、以下のディレクトリの配下のplatformsディレクトリを、実行ファイルのあるディレクトリにコピーすればエラーが解消されるようです。

[Anaconda3インストールディレクトリ]\envs\[仮想環境名]\Library\plugins\