python - setuptools 的 find_packages 是否需要 __init__.py 文件或不识别包
问题描述
setuptools 是否find_packages
仍然要求包__init__.py
里面有一个文件?
文件说_
__init__.py
只有包含文件的包才会被识别。
但是我读到__init__.py
不再需要文件来将目录标记为 python 包。
解决方案
更新
回头看,原来的答案是错误的。
包初始化程序(__init__.py
文件)应该始终存在。由于一些实现细节,它确实可以在没有的情况下工作,但它不是严格意义上的东西,也不是应该依赖的东西。
一些细节:
- https://stackoverflow.com/a/62992832
- https://discuss.python.org/t/mixing-namespace-and-non-namespace-packages-bad-practice/7536/6
- https://discuss.python.org/t/init-py-pep-420-and-iter-modules-confusion/9642
- 佩普 420
原始答案
在最新版本的 Python 中,包初始化程序(__init__.py
文件)并不是绝对必要的,这意味着可以导入此类包等等。
但是setuptools不是 Python,可以这么说。特别是find_packages
它的查找仍然基于此类文件的存在。另一方面,setuptools还提供了替代find_namespace_packages
功能,即能够找到不包含包初始化程序的包。
推荐阅读
- reactjs - 我在提交时无法将数据添加到我的表中
- android-studio - 无法在“文件映射”处打开库
- javascript - 直接使用原生 JavaScript 或 jQuery 方法来获取元素的包含块
- javascript - 如何使用对象对象呈现 React Native 平面列表?
- python - 如何正确地将带有 installEventFilter 的 eventFilter 附加到 QtWidget?
- node.js - "Error": "invalid input value for enum" 仅在应用程序中使用 pg 包执行 INSERT SQL 操作时
- bluetooth - 蓝牙如何识别设备类型?
- javascript - 在 Promise 中正确响应不使用 setState 更新状态
- java - 在以下任何来源中都找不到插件 [id: 'org.springframework.boot', version: '2.1.7.RELEASE']
- css - 标签是否延迟 DomContentLoaded 事件?