Blog
ブログ

2021年10月13日

【Inno Setup】Pythonの実行ファイルとインストーラーをつくろう!【Pyinstaller】



こんにちは。AI部所属のTです。
最近、業務上でPythonプログラムを実行ファイルにすることがあったので、今回は実行ファイルへの変換とインストーラにまとめるところまで、簡単に紹介したいと思います。

Pythonで何かアプリケーションを作ったら、実行ファイルにして配布できると便利です。
Pythonのソースコードのままだと、実行にはPythonの環境を構築する必要がありますが、実行ファイルにしてしまえばPython環境のない人にも利用してもらうことができます。

それに加えて、実行ファイル以外にもアセットが必要な場合や特定のパスの位置に実行ファイルを配置してほしい場合などは、インストーラにしておくとさらに便利です。

今回は、作成したPythonプログラムを実行ファイルに変換し、インストーラとしてまとめるまでの方法を実際にサンプルを使いながら見ていきたいと思います。

今回の流れ

実際にインストーラで配布するまでの流れは以下のようになります。

  • Pythonでアプリケーションの作成
  • pyinstallerで実行ファイル(.exeファイル)を作成
  • Inno Setupでインストーラの作成

順を追って見ていきましょう。

簡単なPythonアプリケーションの作成

今回は、簡単なPythonアプリケーションの例としてこんなものを用意しました。(ソースコードは割愛)

ボタンをクリックすると、ボタン上の文字が切り替わるプログラムです。
guiのアイコンもソホビービーのロゴにしてみました。
ディレクトリの構造としては次のようになっています。

sample_app
├ assets
│ └ soho_logo.ico
├ gui
│ ├ app.py
│ └ mainframe.py
└ main.py

さっそく、これを使って進めていきましょう。

Pyinstallerで実行ファイルの作成

pyinstallerとは

pyinstallerは、Pythonのプログラムから.exeの実行ファイルを生成するツールです。
結構簡単に実行ファイルを作成することができるので、初心者でも扱いやすいのではないかと思います。

pyinstallerの導入方法

pyinstallerは、pipでのinstallを推奨しているそうなので、

$ pip install pyinstaller

でインストールしましょう。
インストールさえすれば、すぐに使うことができます。

pyinstallerの使い方

実際に実行ファイルにする場合には、

$ pyinstaller main.py

とすれば、main.pyをメインのPythonファイルとした実行ファイルを作成できます。

また、pyinstallerは、optionをいくつか設定することができます。

  • –noconsole: 実行時にコンソールを出さないようにします。
  • –onefile: 実行ファイルのみを生成します。
  • –name: 実行ファイルの名前を設定します。
  • –icon: 実行ファイルのアイコンを設定します。

よく使うのはこれら4つのオプションだと思います。

実行時にコンソールが出てくると使いづらいことが多いので、–noconsoleは基本的につけるようにした方がいいと思います。

また、–onefileにすると実行ファイルのみが生成されるので、すっきりしますが、起動に時間がかかるというデメリットもあります。ファイル数が多いと面倒くさい問題は、インストーラの作成でかなり削減されるので、インストーラまで作るなら、–onefileは指定しなくてもいいのかなと思います。

実際にpyinstallerを使ってみる

最初に作成したPythonプログラムを実際に実行ファイルにしてみましょう。
今回は、アプリの名前をSampleAppにして、アイコンは会社のロゴアイコンを使ってましょう。
この場合は、sample_appのディレクトリで次のコマンドを実行します。

$ pyinstaller main.py --noconsole --name SampleApp --icon assets/soho_logo.ico

実行すると、sample_appの中にbuildとdistというフォルダが生成されます。

今回の場合、–onefileを指定していないので、distの中にSampleAppというフォルダが生成されて、さらにその中に実行ファイルとその他実行に必要なものが追加されています。

ソースコードのみのプログラムの場合、そのままSampleAppフォルダの中のSampleApp.exeを実行することでプログラムが動作します。

今回は、プログラム中でもアイコンファイルを参照しているため、assetsフォルダをdistの中にコピーして持ってくる必要があります。
リソースを埋め込むことで参照しているアイコンファイル等をコピーしなくても実行できるようにする方法もありますが、少し複雑なのでここでは割愛します。

ここまでで、実行ファイルの作成ができました!
今回の方法ですと、実行ファイルであるSampleApp.exeの他にも様々なフォルダやファイルがあるので、これらをすべてまとめて配布するインストーラを作っていきます。

Inno Setupでインストーラの作成

Inno Setupとは

Inno Setupは、インストーラを作成するためのオープンソースのソフトウェアです。
どのような構成にするか自分で設定しながらインストーラを作成することができるので、とても便利なツールとなっています。
今回は、このInno Setupを利用して作成した実行ファイルを配布するためのインストーラを作成してみましょう。

Inno Setupの導入方法

まずは、Inno Setupを使えるように導入していきます。

Inno SetupのダウンロードサイトからStable Releaseのものをダウンロードしてきて、インストールしましょう。

Inno Setupの使い方

Inno Setupは、スクリプトを自分で記述してインストーラの作成をすることができますが、Inno Setup Script Wizardから簡単にインストーラを作成することもできます。

Inno Setupをインストールすると、Inno Setup Compilerというものができるので、それを起動すると次の画面が表示されます。

ここで、fileからnewを選択すると、Inno Setup Script Wizardが起動します。

ここからの使い方は、実際にインストーラを作成しながら進めていきましょう。

実際にInno Setupを使ってみる

Inno Setup Script Wizardの使い方は基本的には、指示に従って進めばOKです。

Inno Setup Script Wizardが起動した画面がこちらです。

Nextで次に進みます。

ここでは基本的なアプリケーション情報を入力します。
入力が終わったら、[Next]で次に進みます。

次は、作成したインストーラでのデフォルトのインストール先とフォルダ名を設定します。
デフォルトでは、Program Filesフォルダにインストールする設定になっていますが、任意の場所に設定したい場合は、[Costum]を選択し、パスを指定します。
もし、ユーザにインストール先を変更されたくない場合は、[Allow user to change the application folder]のチェックを外します。
設定が終わったら、[Next]で次に進みます。

ここでは、インストーラに含める実行ファイルや一緒にインストールする付属のファイル等を選択します。
「Application main executable file:」のところで先ほど作成した実行ファイルを選択します。
他に必要なものは「Other application files:」のところで選択します。
必要なものをすべて選択したら、[Next]で次に進みます。

ここまでで、実行ファイルをインストーラにまとめる設定のほとんどは終わっており、後は細かい設定になります。
長くなるので、ここでは細かく説明しませんが、インストーラ起動時の言語や、インストール時のショートカット作成等も設定することができます。

最後まで設定をすると、このような画面になり、[Finish]を押せば完了です。

Inno Setup Script WizardでのScriptの作成が終了すると上のようなアラートが表示されるので、[ok]を選択すると設定したインストーラの作成が開始されます。

実際に作ったインストーラを起動した画面がこちらです。

アイコンが変わっていたりして、オリジナルな感じが出るとかなりうれしいですね!

終わりに

今回は、Pythonアプリケーションのプログラムから実行ファイルを作成し、インストーラまで作成してみました。

インストーラまでできると、かなり本格的なアプリケーションぽくなり少しテンションがあがりますよね!

皆さんも、Pythonプログラムを作成したら、インストーラにまとめて、配布してみてください。
実際に他の人に使ってもらって、フィードバックをもらうと、自分では気づかなかった部分やより良い実装を思いつくきっかけが得られるかもしれません。

このページの先頭へ