当我们编写 Python 代码时,有时可能需要在一个脚本中引用另外一个脚本中的方法或变量,这时我们就需要将这些方法和变量封装进另一个 Python 模块中,然后再在我们需要使用它们的脚本中通过导入这个模块来使用其中的方法和变量。本文将详细讲解 Python 中导入自定义模块的几种方法。
相对导入:
相对导入是指从当前脚本所在的目录开始,按照包名称和目录结构逐层向上导入模块。如果当前脚本并不是在主模块所在的目录下,而是在子模块所在的目录下,则采用相对导入更为直观。
下面的示例演示了相对导入的使用方法:
在目录结构如下的情况下:
├── main_package/
│ ├── __init__.py
│ ├── main_script.py
│ ├── sub_package/
│ │ ├── __init__.py
│ │ ├── sub_script.py
我们需要在子模块 sub_script.py
中导入主模块 main_script.py
中的 test
方法:
from ..main_script import test
test()
绝对导入:
为了避免相对导入中可能会出现模块路径存在歧义的情况,Python3.3 及标准库中已经不再推荐使用相对导入,建议使用绝对导入。
下面的示例演示了绝对导入的使用方法:
在目录结构如下的情况下:
├── main_package/
│ ├── __init__.py
│ ├── main_script.py
│ ├── sub_package/
│ │ ├── __init__.py
│ │ ├── sub_script.py
我们需要在子模块 sub_script.py
中导入主模块 main_script.py
中的 test
方法:
from main_package.main_script import test
test()
添加路径:
有时我们编写的 Python 模块并不在同一目录下,我们需要手动将这个模块所在的目录添加到 Python 搜索路径之中,这个被添加的路径就可以在其他脚本中导入该模块。
下面的示例演示了添加路径的使用方法:
在目录结构如下的情况下:
├── module_package/
│ ├── __init__.py
│ ├── module_script.py
│
├── main_package/
│ ├── __init__.py
│ ├── main_script.py
我们需要在主模块 main_script.py
中导入 module_script.py
中的 test
方法:
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "module_package"))
from module_script import test
test()
通过在 sys.path
中添加模块 module_script.py
所在的目录的路径,我们可以在主模块中访问并导入该模块。
以上就是 Python 中导入自定义模块的几种方法总结。通过这些方法,我们可以在 Python 中方便地组织模块,使得我们的代码更加结构化、清晰。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中导入自定义模块的几种方法总结 - Python技术站