[Python] Pypiに登録するときに.pyではない静的ファイルを含めたい場合

 Pypiにアプリ登録するとき、何も設定しないとhtmlなどPythonではないファイルは入らないです。

Manifest.inを記載すればいい


 setup.pyと同じ階層にManifest.inを作り、そこに含めたいファイルのパスを記載するだけでビルドに含まれるようになります。

 Manifest.inは単純にこんな感じで、include <ファイルパス>って記載すればOKです。

include src/static/*
include src/data/*

ビルドには入ったけどPypiで登録して実行したらFile not foundになる場合


 ビルドには入りましたが、”./static/test.txt”みたいな相対パスで指定するとほぼ間違いなくfile not foundになります。

 pipパッケージを実行したとき、カレントディレクトリはコマンドを実行しているときのユーザーのディレクトリになるためです。当然っちゃ当然か。

 実際に自作ライブラリをコマンド実行し、osパッケージのカレントディレクトリのパスを表示するログとか仕込んでみると、コマンドを実行したディレクトリのパスが表示されます。

 これは以下のように書き換えることで解決できます。

 現在のファイルのパスから参照するといった感じです。


"./static/test.txt"  # NG

## OK
import os
os.path.dirname(os.path.abspath(__file__)) + "/static/test.txt"

コメントを残す

メールアドレスが公開されることはありません。