[解決!Python]PyInstallerでPythonスクリプトを実行可能ファイル化するには解決!Python

Pythonがインストールされていない環境でもスクリプトを実行できると便利なことがある。PyInstallerを使ってこれを実現する方法を紹介する。

» 2023年05月23日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

PyInstaller

 Pythonで書かれたスクリプトを実行可能ファイルに変換すると、Pythonがインストールされていない環境でそのプログラムを簡単に実行できる。Pythonスクリプトを実行可能ファイル化する方法にはいろいろなものがあるが、ここではPyInstallerを紹介しよう。

 PyInstallerの特徴を以下に挙げる。

  • Python 3.7以降に対応
  • Pythonスクリプトとそれが依存するパッケージを1つのパッケージ(単一の実行ファイルまたは配布ファイルを含んだディレクトリ)に作成する
  • Windows、macOS、Linuxに対応(他のUNIX系統のOSでの動作は保証されていない)
  • あるOSプラットフォームで作成されたPyInstallerパッケージは他のOS上では動作しない

 なお、実行可能ファイルとしてパッケージ化する際にはPythonの処理系もまとめられるので、例えば、64ビット版のPythonで実行可能ファイル化したものは32ビット版のWindows上では動作しないなどの制約もある点には注意されたい(macOSでもデフォルトでは、Pythonがどのような環境で動作しているかに応じて、単一のアーキテクチャー向けのバイナリが作成される)。

 以下では、PyInstallerによるPythonスクリプトの実行可能ファイル化の手順を見ていこう。

PyInstallerによるPythonスクリプトの実行可能ファイル化

 PyInstallerを使うには、それをインストールする必要がある。これにはpipコマンドを使えばよい。ここではvenvモジュールを使って仮想環境を構築し、そこにPyInstallerをインストールしている。

> pip install pyinstaller



 これにより仮想環境でpyinstallerコマンドが使えるようになる(仮想環境ではなく、トップレベルでPyInstallerをインストールしたときにはPATHの設定が必要になるかもしれないが、本稿では取り上げない)。

 またスクリプトで使用するパッケージとしてrequestsをインストールしたものとする(requestsパッケージは単にスクリプトが必要とするものをPyInstallerが追跡しパッケージにまとめてくれることを確認するためだけに使用する)。

> pip install requests



 ここではPythonスクリプトを次のような構成とした。

サンプルのPythonスクリプト サンプルのPythonスクリプト

 コードについては詳しい説明は省略する。greet.pyファイルで定義された関数をmain.pyファイルで使用したり、requestsモジュールの__version__属性の値を表示したりするだけだ。

  • mylibディレクトリ:main.pyファイルで使用するgreet.pyファイルを格納
  • main.pyファイル:Pythonスクリプトの本体。greet.pyファイルで定義されている関数とrequests.__version__属性を使用
  • venv:仮想環境

 以上の構成のPythonスクリプトを実行可能ファイル化するには、メインとなるPythonスクリプトがあるディレクトリに移動して、pyinstallerコマンドを実行する。

> pyinstaller main.py



 これにより、Pythonスクリプトの解析が行われた後に、パッケージとしてまとめられた内容がdistディレクトリ以下に作成される(distディレクトリの直下にPythonスクリプトから拡張子を除いたものでディレクトリが作成され、その下にパッケージの内容がまとめられる)。

distディレクトリ以下にmain.exeファイルが作成された distディレクトリ以下にmain.exeファイルが作成された

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。