gpt4 book ai didi

python - python 3.7 包真的不需要 __init__.py 吗?

转载 作者:行者123 更新时间:2023-12-01 00:07:45 35 4
gpt4 key购买 nike

最近我创建了一个flask应用程序,并决定在应用程序文件夹之外添加一个测试文件夹(应用程序和测试文件夹都在同一目录中)。我要测试的所有实现都包含在应用程序文件夹中创建的包和模块中。

两个文件夹中的 __init__.py 文件都可以正常工作。但是,当我从测试文件夹中删除 __init__.py 文件时,我开始遇到 moduleImportError 。 Python 文档说 __init__.py 文件不再是 python 3.3+ 中包的要求,但就我而言,似乎这是一个要求。有人能解释一下为什么会这样吗?

最佳答案

快速回答,是的,感谢 Implicit Namespace Packages您不再需要 __init__.py 文件。但标准库的一些工具包括 unittestsetup tools仍然需要 __init__.py 文件。

在大多数情况下,我推荐以下项目树状结构:

setup.py
src/
mypkg/
__init__.py
app.py
view.py
tests/
__init__.py
foo/
__init__.py
test_view.py
bar/
__init__.py
test_view.py

顶级包src和根文件夹不需要__init__.py文件。所有其他子模块都需要一个 __init__.py 文件。

通过遵循此规则,大多数工具可以成功发现模块,包括 unittest、pytest 和 setuptools。

关于python - python 3.7 包真的不需要 __init__.py 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59837593/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com