如何在Python的setup.py中递归添加软件包数据?

6 浏览
0 Comments

如何在Python的setup.py中递归添加软件包数据?

我有一个新的库,其中包含了许多小数据文件的子文件夹,我想将它们作为包数据添加进去。假设我的库的结构如下:

 library
    - foo.py
    - bar.py
 data
   subfolderA
      subfolderA1
      subfolderA2
   subfolderB
      subfolderB1 
      ...

我想通过setup.py添加所有子文件夹中的所有数据,但是似乎我必须手动进入每个子文件夹(大约有100个),并添加一个__init__.py文件。此外,setup.py会递归地找到这些文件吗,还是我需要像下面这样在setup.py中手动添加它们:

package_data={
  'mypackage.data.folderA': ['*'],
  'mypackage.data.folderA.subfolderA1': ['*'],
  'mypackage.data.folderA.subfolderA2': ['*']
   },

我可以用脚本来实现这个,但是看起来很麻烦。如何在setup.py中实现这个功能?

另外,这些文件夹的层次结构很重要,因为这是一个材料文件数据库,当我们将它们在GUI中呈现给用户时,我们希望保持文件树的完整性,所以保持这个文件结构完整对我们有利。

0