PythonをPyinstallerでexe化

今回は、Pyinstallerを使って複数のファイルインポートしたものやseleniumを使ったPythonファイルをexe化する方法を備忘録として示す。

僕は、スクレイピングをするPythonファイルを作成しております。そのファイルをexe化したいと思っています。ただし、Seleniumが入っているため通常のコードでは起動しません。

今回は、そういった部分についても解説していきたいと思います。

PythonとOSの環境説明と前提条件の提示

まずは、状況のすり合わせを行います。どういう環境下で実行しているのかを示します。

PythonとOSの環境説明

  • Win10 HOME 64ビット
  • Python 3.7.4

前提条件

フォルダ構成

上記フォルダ構成を作成する。

chromedriver.exeは、cドライブで検索をすると場所がわかる。(動画でも説明)

DateNow.pyは、Webスクレイピング.pyでインポートする。つまり、複数ファイルの時にどう操作をするのかを示すためにあえて入れた。

KWサンプルとWebスクレイピングの関係はパッケージ化するPythonのファイルである。Webスクレイピングのスクレイピングするために必要な文字を中に入れておく。そのため、KWサンプルは今ここに無くても良い。とりあえずは、chromedriver.exeとWebスクレイピング.pyの2つを用意しておけば事足ります。

Pyinstallerでexe化を開始する

exe化のポイント

cmdで操作を実行するためのコードを説明

ファイルの位置や後処理などを説明

Seleniumのwebdriverをexeに内包させる

Pyinstallerの操作はcmdがメインとなります。Python用のcmdの操作方法をまとめておりますので、cmdの操作方法がわからない方はこちらも一緒に読んでみてください。

先にPyinstallerの最も適したサンプルコード

今回は、2つの方法が正しいということがわかりました。

通常のexe化

バイナリ―ファイルを追加したexe化

今回の目的

今回の検証は3つの方法を試してみます。Seleniumのwebdriverを使ったコードであるため、通常のexe化だけではなく、別のバイナリ―ファイルを内包させる方法なんかも一緒に学べればと考えています。

パターン1:オプションなしでexe化

■コードの紹介

■評価

distフォルダ内にたくさんのファイルが出てくるので、exe化とはまた違う印象。こういう方法が必要な人もいるのかもしれないが、今は不要。

パターン2:–onefileを使用してexe化

■コードの紹介

■評価

distフォルダ内に、exeファイルが作成されてました。一つのファイルにまとまっていて、非常に便利です。求めていた形です。

しかし、起動させてみるとうまく動作せず、chromedriverが必要となっていることがわかりました。exeファイルだけで起動できるように調整を進める。

パターン3:–onefile –noconsole –add-binaryを使用してexe化

■コードの紹介

■評価

パターン2と同じ見た目。特徴は特にない。しかし、chromedriverを置かなくても起動ができた。今回はDateNow.pyもインポートしているがインポートも成功している様子。一つのPythonファイルを指定すると、Pyinstallerが自動でたどって、必要なライブラリをさらっていってくれる。

まとめ

まだまだ使いこなせていないが、いったんの備忘録としては十分な結論を求められたと考えている。exe化を今後もしていき、いろいろな方法を認識していこうと考えている。