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