Python包 - 按类导入,而非文件

61 投票
1 回答
56142 浏览
提问于 2025-04-10 23:29

假设我有以下的文件结构:

app/
  app.py
  controllers/
    __init__.py
    project.py
    plugin.py

如果在 app/controllers/project.py 文件中定义了一个叫 Project 的类,那么在 app.py 文件中可以这样导入它:

from app.controllers.project import Project

我希望能够简单地这样做:

from app.controllers import Project

这该怎么实现呢?

1 个回答

104

你需要把

from project import Project

放在 controllers/__init__.py 这个文件里。

注意,当绝对导入成为默认设置时(大概是Python 2.7版本),你需要在模块名称前加一个点(这样可以避免和顶层模型名为 project 的冲突),也就是说,

from .project import Project

撰写回答