LoginSignup
36

More than 5 years have passed since last update.

Pyinstaller でリソースを含めたexeを作成する

Posted at

Pythonで作成したツール等をexe化したい場合、Pyinstallerを使うと

> pyinstaller --onefile --icon=icon.ico -n appname app.py

のような感じで簡単にexe化することができて便利です。

ただこのままだと、例えばexe起動時にスプラッシュ画面を表示したい場合、
exeのあるフォルダ等に別途スプラッシュ画像を用意する必要があります。

Pyinstallerで出力したexeにリソースを含めたい場合は、

・リソースフォルダを作る
・リソースフォルダにアクセスする関数を作る
・pyinstallerでリソースを含めたexeを作る

を行う必要があります。

- リソースフォルダを作る

resources等の名前でリソースを置くフォルダを作成します

- リソースフォルダにアクセスする関数を作る

import sys
import os

def resourcePath(filename):
  if hasattr(sys, "_MEIPASS"):
      return os.path.join(sys._MEIPASS, filename)
  return os.path.join(filename)

のようなリソースパスを取得する関数を作成しておき、

    tmpimg = cv2.imread(resourcePath("resources/img.png"))

のような形で使用することができます。

- pyinstallerでリソースを含めたexeを作る

> pyinstaller --onefile --icon=icon.ico -n appname app.py

のように一度exeを作成すると、appname.spec というファイルが作成されるのでこれをテキストエディタで開きます。

exe = EXE(pyz,
          a.scripts,
          a.binaries,

という部分があるので、ここに

exe = EXE(pyz,
          Tree('resources',prefix='resources'), #<-
          a.scripts,
          a.binaries,

のように定義を追加し、

> pyinstaller appname.spec

を実行し、再度exeを作成するとリソースフォルダを含んだexeが作成されます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36