6

だから私はsetuptoolパッケージを作っています。

パッケージに追加のデータファイルを含めるには、data_file内部にパラメータを指定する必要がありますsetup()

コード例:

datadir = os.path.join('share','data')
datafiles = [(datadir, [f for f in glob.glob(os.path.join(datadir, '*'))])]
import metainfo # a file with relevant information
setup(
    name             = 'yourpackage',
    version          = metainfo.version,
    maintainer       = metainfo.maintainer,
    maintainer_email = metainfo.maintainer_email,
    author           = metainfo.authors,
    author_email     = metainfo.authors,
    description      = metainfo.description,
    keywords         = metainfo.keywords,
    long_description = metainfo.long_description,

    # package installation
    packages = find_packages('src'),
    package_dir  = package_dir,

    data_files = datafiles,
}

datafileこの例の変数には、次のようなデータが含まれます

[('share/data', ['share/data/addon.xml.tmplt', 'share/data/default.py.tmplt'])]

ただし、私の例では、フォルダーとファイルのリストを再帰的に作成していません。

パラメータfolder_pathとして取得し、タプルのリストを返す関数が必要です。

[
    ('share/data', ['share/data/addon.xml.tmplt', 'share/data/default.py.tmplt']),
    ('share/data/inside', ['share/data/inside/file.iside', 'share/data/inside/file2.inside']),
    .........

]
4

1 に答える 1

10

os.walk()その情報を生成するために使用します。

datafiles = [(root, [os.path.join(root, f) for f in files])
    for root, dirs, files in os.walk(datadir)]

これにより、絶対パスが生成されます。root必要に応じて、変数をもう少し処理して、setup.pyディレクトリを基準にして変数を作成できます。

于 2012-11-29T15:26:49.740 に答える