在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']
并让它们自动查找
a
和b
之类的东西,因为它们具有初始化文件。谢谢。 最佳答案
(我知道)最简单的方法是使用 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/