python - 模块、导入与搜索路径

文章目录

  • from…import 语句
    • 搜索路径
  • 示例代码
  • 参考

from…import 语句

Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。

  • 命名空间:是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典。

搜索路径

(当你导入一个模块,Python 解析器对模块位置的搜索顺序是)

  • 当前目录

  • 如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。

  • 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/

  • system模块:

    • 模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
    • 查看当前的搜索路径:print(sys.path)
    • 追加搜索路径:sys.path.append("/path")
    • 插入搜索路径,被优先搜索:
      • 增加指定路径:sys.path.insert(0, "/path")
      • 增加路径为上一级:sys.path.insert(0, "..")

示例代码

# 项目结构
├── all_config
│   └── settings.py
└── src
    ├── __init__.py
    ├── config
    │   └── settings.py
    ├── db
    │   ├── __init__.py
    │   └── database.py
    └── main.py

# src/db/database.py

sys.path.insert(0, "..")  # 告知python在上一级目录搜索,否则 无法database无法找到config文件夹
from config.settings import MYSQL

参考

  • Python 模块-菜鸟教程
  • [389]python引入模块报错ValueError: attempted relative import beyond top-level package

你可能感兴趣的:(Python)