【Python勉強会】pyファイルをアプリケーション化~作成したコードをexe化する方法~

どうも!リョクちゃです。

今回はpyファイルをアプリケーション化、いわゆる.exe化する方法を

簡単に紹介していきます。

ふとコードを書いていると、Pythonってどうやってアプリケーション化するんだろう?

と感じたことはありませんか?



調べると色々な方法があるのですが、

色々調べた結果個人的にわかりやすかった、使いやすかった方法を発信していきます。

※アプリケーション化することで誰かに配布することもできるのでおススメです。

一方でファイルサイズが大きくなってしまうので注意も必要です。

→ 使わないパッケージなどはコードに含まないことです。

ちなみに前回のPython勉強会はこちらになります。

プログラムでブラウザの操作が自動化できればいいな?って思ったことはありませんか?今回は、Pythonでブラウザ操作を自動化してくれるSeleniumというライブラリをインストール~ブラウザでURLを開くまでをFirefoxで紹介しています。何かしらの参考になれば嬉しいです。

目次

アプリケーション化するための準備

動作の確認は特に今回はしないので、以下のpyファイルを.exe化していきたいと思います。

作成した.pyファイルを任意のディレクトリに保存しておいてください。

筆者は、デスクトップ上にTestフォルダを作成し、その中にtestフォルダを作成しました。

ややこしい作り方になってしまいました。

アプリケーションファイルを作成

スポンサーリンク




コマンドラインを起動

それではWindowsメニューの検索バー(Windows10の場合、虫眼鏡アイコンのある欄)に

“cmd”と打つとコマンドプロンプトが表示されるかと思います。

これを立ち上げます。



作業ディレクトリの移動

立ち上げたコマンドプロンプト上で、先ほどHelloWorldのpyファイルを保存した

ディレクトリへ移動します。

移動するには、cdコマンドを使います。

cd C:\Users\ユーザー名\Desktop\Test\test

.exe化の実行

.exe化をするにあたって、今回は”pyinstaller“といわれるツールを使います。

インストールがまだの方は、pipでインストールをしておきましょう。

pip install pyinstaller

これのまえに

pip install –upgrade pip

を実行しておきましょう。

インストールができたら、使っていきます。

pyinstaller <変換したいアプリケーション名> <オプション>

でpyファイルをexe化することができます。

オプションには、主に

  • –onedir
    1つのフォルダに出力結果をまとめます。
  • –onefile
    1つのファイルに出力結果をまとめます→.exeファイルのみが生成されます。
  • –noconsole
    コンソール画面の表示がされなくなります。
  • –clean
    前回のキャッシュと出力フォルダを削除しビルドを行います。

があります。

よく使うオプションになるので覚えておきましょう。

オプション無しでpyinstallerを実行すると、

pyinstaller hello.world.py

作業ディレクトリ内にアプリケーションファイル一式が作成されています。

(下図参照)

作業ディレクトリ内にいくつかのフォルダやファイルが作成されています。

distフォルダの中に.exeファイルが出力されています。

オプション指定がないので、.exeファイル以外にも

関連しているファイルが出力されています。

.exeファイルのみが欲しいのに……というかたは、オプションに

–onefileを付けて、pyinstallerを実行すると、.exeのみが出力されます。

pyinstaller hello.world.py –onefile

出力されたフォルダの中を見てみると、

作業ディレクトリ上に出力されるフォルダやファイルはオプション無しと同じです。

distフォルダの中を見てみると、.exeファイルのみが出力されます。

オプション無しと比較してみると、

上がオプション無し、下が–onefileオプション適用になります。

サイズが違うのがわかります。

–onefileにすると、.exeファイルのみの出力になりますが、

オプション無しで出力された様々なファイルがexeにまとめられる形になるため、

サイズが大きくなります。

このサイズは、ライブラリをimportしている数によって比例します。

特にpandasを使用したアプリケーションの場合、サイズがかなり大きくなります

例えば、クラウドワークスでアプリケーションを納品したい場合、上限が100MBなので

場合によって100MB以下に収まらない場合があります。

そのため注意が必要です。

※意識しないで作っていると、後で面食らうので気を付けましょう。

また、Seleniumを使ったアプリケーションを.exe化した場合、

オプションに–noconsoleを使用すると起動がしないという事もあるので

留意しておきましょう。

簡単に.exeファイルは作れますが、そこからエラーが起きたりと

悩まされることが多々出てくることもあるので身構えておきましょう。



まとめ

pyファイルを.exe化する方法について簡単にざっくりと紹介していきました。

.exe化することで誰かに配布できる形になりますが、ファイルサイズが大きくなってしまって

配布出来ないといったことも出てきます。

(特にクラウドワークスなどのファイルサイズに上限があるサイトでの配布)

→ 納品の際はサイズも意識して作成してみてください。

pandasライブラリをよく使われる方は、特にサイズが大きくなるので、

なるべくpandasを使わない方法もしくは今回紹介した方法とは別の方法で

.exe化することをおススメします。

最後までお読みいただき、ありがとうございます。

・こちらの書籍を参考にPythonの理解を深めました。

スポンサーリンク