欢迎访问宙启技术站
智能推送

setuptools.setup中关于包的包含和排除规则

发布时间:2023-12-18 18:09:49

在setuptools库中,使用setup函数来定义Python包的打包、分发和安装规则。在setup函数中,可以使用参数packagespackages_exclude来指定哪些包将会被包含或排除。

首先,让我们来看一下使用packages参数的例子:

from setuptools import setup, find_packages

setup(
    name='my_package',
    version='1.0',
    packages=find_packages(),
)

在上面的例子中,packages参数通过调用find_packages()函数来自动发现当前目录下的所有包,并将它们包含在打包发布中。

如果你想要排除某些特定的包,可以使用packages_exclude参数。下面的例子展示了如何使用packages_exclude参数:

from setuptools import setup, find_packages

setup(
    name='my_package',
    version='1.0',
    packages=find_packages(exclude=['tests']),
)

在上面的例子中,exclude参数接受一个列表,其中包含一些你想要排除的包的名称。在这个例子中,所有以tests开头的包都会被排除在外,不会被打包发布。

除了使用exclude参数来排除特定的包,你还可以使用include参数来显式地包含一些特定的包。下面的例子展示了如何使用include参数:

from setuptools import setup, find_packages

setup(
    name='my_package',
    version='1.0',
    packages=find_packages(include=['my_package', 'my_package.utils']),
)

在上面的例子中,include参数接受一个列表,其中包含一些你想要包含的包的名称。在这个例子中,只有my_packagemy_package.utils包会被包含在打包发布中。

除了使用include参数来显式地包含特定的包,你还可以使用exclude参数来排除一些特定的文件或文件夹。下面的例子展示了如何使用exclude参数:

from setuptools import setup, find_packages

setup(
    name='my_package',
    version='1.0',
    packages=find_packages(exclude=['*.tests', '*.tests.*', 'tests.*', 'tests']),
)

在上面的例子中,exclude参数接受一个列表,其中包含一些你想要排除的文件或文件夹的通配符表达式。在这个例子中,所有以.tests.tests.开头的文件或文件夹都将被排除在外,不会被打包发布。

以上便是对于setuptools.setup中关于包的包含和排除规则的使用例子的详细解释。在实际使用中,你可以根据自己的项目结构和需要,灵活地使用packagespackages_excludeincludeexclude参数来定义你的打包、分发和安装规则。