Python 设置工具。如何使包包含额外的数据文件夹和其中的所有文件夹
所以我正在制作setuptool包 要在包中包含额外的数据文件,我需要在Python 设置工具。如何使包包含额外的数据文件夹和其中的所有文件夹,python,filenames,setuptools,Python,Filenames,Setuptools,所以我正在制作setuptool包 要在包中包含额外的数据文件,我需要在setup()中指定data\u文件参数 代码示例: 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
setup()
中指定data\u文件
参数
代码示例:
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']),
.........
]
用于生成该信息:
datafiles = [(root, [os.path.join(root, f) for f in files])
for root, dirs, files in os.walk(datadir)]
这将产生绝对路径;如果需要,您可以稍微处理
root
变量,使其相对于setup.py
目录。您可以使用[(root,glob.glob(root/****,recursive=True)]
@warownia1:否,因为这不会为每个目录创建(directorypath,列出\u目录中的\u文件)
元组。