【发布时间】:2020-08-13 15:07:13
【问题描述】:
setuptools 的find_packages 是否仍要求软件包内部有一个__init__.py 文件?
只有包含
__init__.py文件的包才会被识别。
但我读到 __init__.py 文件不再需要将目录标记为 python 包。
【问题讨论】:
标签: python setuptools python-packaging
setuptools 的find_packages 是否仍要求软件包内部有一个__init__.py 文件?
只有包含
__init__.py文件的包才会被识别。
但我读到 __init__.py 文件不再需要将目录标记为 python 包。
【问题讨论】:
标签: python setuptools python-packaging
更新
回头看,原来的答案是错误的。
包初始化器(__init__.py 文件)应该始终存在。由于一些实现细节,它确实可以在没有的情况下工作,但它不是严格意义上的东西,也不是应该依赖的东西。
一些细节:
原答案
在最新版本的 Python 中,包初始化器(__init__.py 文件)并不是绝对必要的,这意味着可以导入此类包等等。
但是 setuptools 不是 Python,可以这么说。特别是find_packages 仍然基于此类文件的存在进行查找。另一方面,setuptools 还提供了替代的 find_namespace_packages 函数,它能够找到不包含包初始化程序的包。