当在描述一个Python包setup.py在distutilsPython中,是有办法使它所以自动获得每一个有一个目录__init__.py中,并包含一个子包?
即如果结构是:
mypackage/__init__.py
mypackage/a/__init__.py
mypackage/b/__init__.py
Run Code Online (Sandbox Code Playgroud)
我想避免这样做:
packages = ['mypackage', 'mypackage.a', 'mypackage.b']
Run Code Online (Sandbox Code Playgroud)
而只是做:
packages = ['mypackage']
Run Code Online (Sandbox Code Playgroud)
让它自动找到类似的东西a,b因为它们有一个init文件.谢谢.
dm7*_*m76 111
我会建议使用find_packages()函数可用setuptools的,例如:
from setuptools import setup, find_packages
Run Code Online (Sandbox Code Playgroud)
然后呢
packages=find_packages()
Run Code Online (Sandbox Code Playgroud)
Sea*_*ira 20
最简单的方法(我知道)是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 ...
)
Run Code Online (Sandbox Code Playgroud)
Shu*_*ary 19
与dm76的答案相同,只是我的回购中也有测试,所以我使用:
from setuptools import find_packages
packages=find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21660 次 |
| 最近记录: |