Python模块导入 - sys.path

0 阅读2分钟

ChatGPT Image 2026年3月4日 11_12_52.png Python 的 sys.path 是一个非常重要的概念,它定义了 Python 在导入模块(使用 import 语句)时会去搜索的路径列表。当你执行 import xxx 时,Python 就会按照 sys.path 列表中的顺序,依次去这些路径下查找名为 xxx 的模块。

简单来说,sys.path 主要包含以下四个核心组成部分

1. 当前脚本所在目录(或者当前工作目录)

这是 sys.path 的第一个元素,通常是空字符串 '',它代表当前目录。

  • 具体指什么?
    • 如果你直接运行一个脚本(例如 python /home/user/project/app.py),那么 /home/user/project 会被添加到 sys.path 中。
    • 如果你在交互式命令行(REPL)中启动 Python,那么你启动 Python 时所在的当前工作目录会被添加进去。
  • 作用: 让你可以直接导入和脚本放在同一目录下的自定义模块。

2. 环境变量 PYTHONPATH 指定的路径

如果系统中设置了环境变量 PYTHONPATH,它的内容会被解析并添加到 sys.path 中(通常排在默认路径之前,以便覆盖)。

  • 作用: 允许你将公共的、跨项目的库放在一个特定目录,并通过设置环境变量让 Python 能找到它们。这类似于其他语言中的库路径设置。

3. 标准库路径

这是 Python 自带的、内置的大量模块(如 ossysjson 等)所在的目录。

  • 位置: 通常在 Python 安装目录的 Lib 文件夹下(Windows 系统)或 lib/python3.x 文件夹下(Linux/macOS 系统)。
  • 作用: 让你无需额外安装就能直接导入 Python 自带的强大功能。

4. 第三方库安装路径

当你使用 pippip3 安装第三方包(如 requestsnumpy 等)时,它们被存放的目录。

  • 位置:
    • 系统级: 通常位于 Python 安装目录下的 Lib/site-packages(Windows)或 lib/python3.x/site-packages(Linux/macOS)。
    • 虚拟环境级: 如果你在使用 venvconda,那么这个路径会指向虚拟环境内部的 site-packages 目录。
  • 作用: 让你能够导入并使用社区贡献的丰富第三方库。

5. .pth 文件添加的路径(较少见)

site-packages 目录下,可以放置一些后缀为 .pth 的文件。Python 在启动时会读取这些文件,并将其中的路径添加到 sys.path 中。


如何查看?

你可以在 Python 代码或交互式环境中运行以下命令,清晰地看到当前的 sys.path 列表:

import sys
from pprint import pprint

pprint(sys.path)

总结示意图

为了方便理解,可以把这个结构想象成一个层层递进的搜索系统:

sys.path 搜索顺序
─────────────────────────────
1. 当前目录 (你的脚本所在的地方)
2. PYTHONPATH 环境变量 (你自定义的库路径)
3. 标准库 (Python 自带的模块)
4. site-packages (用 pip 安装的第三方库)