Python包 - 按类导入,而不是文件导入

Ell*_*pot 47 python packages

说我有以下文件结构:

app/
  app.py
  controllers/
    __init__.py
    project.py
    plugin.py
Run Code Online (Sandbox Code Playgroud)

如果app/controllers/project.py定义了一个类Project,app.py会像这样导入它:

from app.controllers.project import Project
Run Code Online (Sandbox Code Playgroud)

我想能做到:

from app.controllers import Project
Run Code Online (Sandbox Code Playgroud)

怎么做?

dF.*_*dF. 86

你需要把

from project import Project
Run Code Online (Sandbox Code Playgroud)

controllers/__init__.py.

请注意,当绝对导入成为默认值(Python 2.7?)时,您需要在模块名称前添加一个点(以避免与名为的顶级模型发生冲突project),即

from .project import Project
Run Code Online (Sandbox Code Playgroud)

  • 我想知道是否可以完全排除调用 `app.controllers.project.Project` 的能力,以避免具有指向同一对象的冗余路径(同时具有 `app.controllers.project.Project` 和 `app此时.controllers.Project`) (3认同)