从包的 __init__ 导入
我遇到了一个问题,虽然我试过几乎所有我知道的方法或者在别的地方看到的解决方案,但还是没法解决。
我有一个包,结构是这样的:
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
文件删掉,因为看起来这个文件夹并不应该被当作一个包来使用。