python 中的模块、包以及搜索路径的问题

本文探讨Python中的模块和包的概念,包括模块的搜索路径、如何增加搜索路径,以及`python -m`命令的影响。同时,介绍了包中的`__init__.py`文件及其简化导入的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 中的模块、包以及搜索路径的问题

1. 模块(module)

1.1 什么是模块?

一个 .py 文件就是一个模块。

1.2 模块搜索路径

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

  • 1、当前目录(入口的目录,比如 python main.py 是指 main.py 所在的目录)
  • 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
  • 3、如果都找不到,Python 会察看默认路径。UNIX下,默认路径一般为 /usr/local/lib/python/。

模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

1.3 增加搜索路径

既然模块搜索路径存储在 system 模块的 sys.path 变量中,只要向里面添加路径就可以增加搜索路径。

比如对于下面这个 project, main.py 中需要引入 package_1 的时候,明显是找不到的,因为 package_1 不在 API 目录下。

project_dir
|--API
	|--main.py
|--package_1
	|-- __init__.py
	|-- module_1.py
	|-- module_2.py

此时可以在 main.py 中 添加如下代码,增加搜索路径,就可以找到 package_1。

sys.path.append('..')
from package_1.module_1 import function1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值