Python imports - 期间之前的当前包名称?

Python imports - current package name before period?

flask tutorial中,使用了以下包结构:

yourapplication/__init__.py
yourapplication/simple_page.py

现在,在 __init.py 中,完成以下导入:

from yourapplication.simple_page import simple_page

谁能给我解释一下为什么 . 前面有 yourapplication 吗?我以为你可以做

from .simple_page import simple_page

任何人都可以向我解释为什么 .在那儿?

这样做是为了告诉您您的应用程序是项目的基础,您需要从那里开始工作。它使项目路径成为绝对路径,并将您的应用程序作为源目录。

但是如果不使用这种方法,并且像 from .simple_page import simple_page 这样使用相对导入,那么如果简单的页面文件被删除并重构到不同的文件夹和 __init__ 文件中,那么调试就会变得困难。

使用from yourapplication.simple_page import simple_page这种方式会告诉项目的完整结构,所有导入都是从源目录级别进行的,这使得后期重构很容易。

总的来说:一句话就是为了维护,扩展项目。

你可以相对导入和绝对导入,使用这种方式可以告诉整个项目结构和重构时间,如果项目设计发生变化,重构代码需要时间,相比之下,相对导入重构花费的时间更少

点表示当前工作方向,因此在 python 代码中的 import 语句中,程序员在脚本语句之前使用点。在您的情况下,您的包名称是 yourapplication,因此您可以在 import 语句中使用点。

yourapplication/simple_page.py yourapplication/__init__.py dot = yourapplication

from .simple_page import simple_page