📜  相对导入与绝对导入 (1)

📅  最后修改于: 2023-12-03 15:27:17.020000             🧑  作者: Mango

相对导入与绝对导入

在Python中,模块(module)是指一个包含了变量定义、函数定义等的Python文件。在编写代码时,我们可以通过导入模块的方式来使用其中的内容。在模块的导入中,相对导入和绝对导入是两种常见方式。

绝对导入

绝对导入是指从顶层模块开始的相对路径。使用绝对导入时,我们需要指定要导入的模块的完整路径。在使用绝对导入时,Python会从sys.path这个列表中选择路径进行搜索,直到找到指定的模块为止。

例如,我们需要导入模块module1,这个模块的完整路径是/usr/local/lib/python3.8/site-packages/myapp/module1.py,则我们可以使用如下语句进行绝对导入:

from myapp.module1 import some_function

这里,myapp是顶层模块,module1是要导入的模块名。

相对导入

相对导入是指从当前模块开始的相对路径。使用相对导入时,我们不需要指定完整的路径,只需要指明要导入的模块与当前模块的相对位置即可。

例如,我们有一个包mypackage,包含了以下几个模块:

mypackage/
├── __init__.py
├── module1.py
├── subpackage/
│   ├── __init__.py
│   └── module2.py

我们在module2中需要导入module1,则可以使用相对导入:

from ..module1 import some_function

这里,..表示当前模块的父级目录。在使用相对导入时,需要注意:

  1. 相对导入只能在包内使用,不能在单个模块文件中使用;
  2. 导入的模块必须和当前模块在同一包下,或者在包的子目录中。
总结

绝对导入和相对导入都是Python中常用的模块导入方式。在使用时,我们需要根据实际情况选择合适的方式进行导入。

绝对导入适合在不同包路径中导入模块,相对导入适合在同一包路径下的模块导入操作。