faire distutils en Python de trouver automatiquement les paquets
Lors de la description d'un paquet python dans setup.py
dans distutils
en Python, est-il un moyen de faire en sorte d'obtenir automatiquement chaque répertoire qui a une __init__.py
en elle et de l'inclure comme un sous-paquetage?
c'est à dire si la structure est:
mypackage/__init__.py
mypackage/a/__init__.py
mypackage/b/__init__.py
Je veux éviter de faire:
packages = ['mypackage', 'mypackage.a', 'mypackage.b']
et au lieu de faire juste:
packages = ['mypackage']
automatiquement trouver des choses comme a
et b
car ils ont un fichier init. merci.
- Assurez-vous que vous ne laissez pas une ordure s'accumuler dans votre structure de paquet avant de construire si vous faites cela.
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple (que je connais) est d'utiliser
pkgutil.walk_packages
pour un rendement de ces paquets:__path__
me rendreNameError
, j'utilise'.'
à la place.Je vous conseille d'utiliser le find_packages() fonction disponible avec setuptools tels que:
et puis ne
find_packages()
ne trouve pas > 3.3-style-init.py paquets. Le billet à propos de ce problème est à bitbucket.org/pypa/setuptools/issue/97. Donc pour l'instant, il est nécessaire d'ajouter__init__.py
des fichiers dans des paquets pourfind_packages()
auto collection, ou vous devez nommer explicitement danspackages
.__init__.py
fichiers ne sont pas utilisées sur Python 3.3 (package init file 'mymod/mysubmod/__init__.py' not found (or not a regular file)
).find_namespace_packages()
(voir setuptools.readthedocs.io/en/latest/...), qui travaille avec les PEP 420 espace de noms de paquets (python.org/dev/peps/pep-0420)Même que dm76 réponse, juste que j'ai aussi des tests dans mon repo, j'utilise: