[python] setup.py でリリースするときに、py以外も含めるようにする方法

タイトルの通り。
python setup.py install したときに、pythonファイル以外も含める方法。

特になにもせず

こんな感じでsetup.pyを作成すると、pythonファイル以外を入れることが出来ません。
installではなく
python setup.py sdist で、リリースようのzipを作りたい場合は、project下に MANIFEST.inを作成し、
そのファイルに

recursive-include <フォルダ名> <含める拡張子>

といれておけばOKですが、installだと含まれない…長らく調べてたのですが、やり方がわかりました。
(力押しともいう)

setup_py_test

フォルダツリーはこんな感じ。

setup.py install を実行したとき、setup.py内では自分自身のパスを基準にします。
py以外のデータがある場合は、 package_dataに、Dic型で指定します。
{<package_name> : [含めたいファイル(ワイルドカードで指定可能)]
今回は、とりあえずフォルダ下にあるファイルをすべてにしたいので、os.walkでサブフォルダ以下を検索します。
検索時に data/* のようにしてしまうと、上サンプルでいうなら exeフォルダもファイルとして扱われてしまい
errorになってしまいます。
ので、 [“data/*.*”,”data/exe/*.*”] のように、ファイルを含めるような配列を作成しました。(12行目)

この書き方で、test_project下のすべてのファイル(サンプルだと test.txt と exe/aaa.exe の2つ)も含めて
installでコピーすることができました。

分かってしまえば早いんですけどね(´・ω・`)

コメントを残す

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


*