在Python的setup.py中的distutils中描述python包时,是否有办法使其自动获取其中包含__init__.py的每个目录并将其作为子包包含在内?

即如果结构是:

mypackage/__init__.py
mypackage/a/__init__.py
mypackage/b/__init__.py

我想避免这样做:
packages = ['mypackage', 'mypackage.a', 'mypackage.b']

而是做:
packages = ['mypackage']

并让它们自动查找ab之类的东西,因为它们具有初始化文件。谢谢。

最佳答案

(我知道)最简单的方法是使用 pkgutil.walk_packages 产生软件包:

from distutils.core import setup
from pkgutil import walk_packages

import mypackage

def find_packages(path=__path__, prefix=""):
    yield prefix
    prefix = prefix + "."
    for _, name, ispkg in walk_packages(path, prefix):
        if ispkg:
            yield name

setup(
    # ... snip ...
    packages = list(find_packages(mypackage.__path__, mypackage.__name__)),
    # ... snip ...
)

关于python - 在python中使distutils自动查找包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12966216/

10-11 16:57