Python: 如何从 __init__.py 文件中导入?

14 投票
2 回答
18650 浏览
提问于 2025-04-17 21:30

我正在用 Flask框架 建一个网站。在这个网站里,我有一个文件夹,里面放了一些Python文件,还有一个叫做 __init__.py 的脚本(我想这个文件夹可以称作一个模块吧?)。在这个 init.py 文件里,我有一行代码:

db = Database(app)

现在我想在这个文件夹里的另一个脚本中使用 db。通常我会用 from __init__ import db 这样的方式来做,但我觉得这样做不太对,更别提这是不是符合Python的风格了。而且,因为它是在 __init__.py 文件里,我想它应该是为整个文件夹/模块初始化的。

有没有人知道我该怎么从 __init__.py 文件中使用 db 呢?欢迎任何建议!

2 个回答

0

__init__.py 文件在你导入它所在的包时会自动被导入。比如说,如果 __init__.py 在一个叫做 foo 的包里,当你导入 foo 的时候,

import foo
from foo import *
import foo as ...

__init__ 文件就会被调用。你是在用 Python 2 还是 3 呢?如果你用的是 Python 3,你需要使用动态导入:

from * import __init__

一般来说,从 __init__ 导入东西并不是个好习惯,我建议你把这些代码放在包里的其他文件中。

25

试试相对导入

from . import db

撰写回答