使用dist utils(setup.py)作为包数据的一部分,是否可以包含子目录?

9 浏览
0 Comments

使用dist utils(setup.py)作为包数据的一部分,是否可以包含子目录?

基本上,我的Python包的设置如下:

module
\_examples
  \_folder1
     \_file1.py
     \_file2.py
  \_folder2
    \_file1.py
    \_file2.py

基本上,我只想使用以下代码:

package_data  = { 
            'module': ['examples/*'],
  },

因为我的项目经常有人添加示例,我希望能够轻松地从我的应用程序中列出它们。我可以让任何文件在示例中都能工作,但无法递归遍历子目录。这可行吗?

0
0 Comments

问题出现的原因是作者想要在dist utils的setup.py中包含子目录作为包数据。解决方法是使用setuptools的find_packages()函数来递归地查找项目中的所有包,并确保为每个想要包含的包的子目录中包含__init__.py文件。作者还提醒要小心,因为如果不显式地使用exclude参数排除测试目录等,可能会意外地包含这些目录。

以下是修改后的setup.py代码示例:

from setuptools import setup, find_packages
setup(
    name='MySoftware',
    packages=find_packages()
)

0
0 Comments

Manifest.in文件应该放在与setup.py文件相同的目录中。

0
0 Comments

在使用distutils的setup.py作为软件包数据的一部分时,可能需要包含子目录。可以通过在setup.py文件中的packages参数中添加子模块来实现这一点。具体的解决方法如下所示:

在setup.py文件中添加packages参数:

packages=['PackageName','PackageName.SubModule']

其中,'PackageName'表示主模块名称,'PackageName.SubModule'表示子模块名称。

通过这种语法,可以将子模块包含到主软件包中进行分发。

更多关于其他参数的信息可以在文档中找到。

这是所有回答中最简洁的方法。

0