从包的 __init__ 导入

0 投票
2 回答
637 浏览
提问于 2025-04-16 08:55

我遇到了一个问题,虽然我试过几乎所有我知道的方法或者在别的地方看到的解决方案,但还是没法解决。

我有一个包,结构是这样的:

package/
__init__.py
    file.py
    file2.py
    file3.py
    subpackage/
        __init__.py
        submodule1.py
        submodule2.py

假设我在包的init.py文件中声明了一个变量'db',我想把这个'db'导入到file.py文件中,我应该这样做吗:

file1.py:

from package import db

2 个回答

0

一般来说,你的 __init__.py 文件里不应该放任何东西,除了可能一些不依赖其他导入的常量。因为——正如你发现的——如果 __init__.py 里面有东西需要从更深层次的目录导入,而那些更深层次的目录又试图进行跨越还在构建中的 __init__.py 的导入,就会导致导入循环的问题。

0

试试用 from project_top.project import db 这个方式,或者更简单的方法是把 project_top 这个文件夹里的 __init__.py 文件删掉,因为看起来这个文件夹并不应该被当作一个包来使用。

撰写回答