Python 3.7以降の場合、標準モジュールimportlib.resourcesが利用できる。

以下のようなディレクトリ構造でファイルを同梱する。

  • setup.py
  • MANIFEST.in
  • README.md
  • LICENSE
  • mymodule
    • __init__.py
    • mymodule.py
    • mydirectory
      • __init__.py
      • myfile1.txt
      • myfile2.bin

注意点

  • 読み込むファイルのあるディレクトリに__init__.pyを作成する
  • MANIFEST.inでファイルがパッケージに同梱されるように記述する
include README.md
include LICENSE
recursive-include mymodule/mydirectory *
import importlib.resources as ILR

# テキストファイル
ILR.read_text('mymodule.mydirectory', 'myfile1.txt', encoding='utf-8') # -> str

# バイナリファイル
ILR.read_binary('mymodule.mydirectory', 'myfile2.bin') # -> bytes