python中import机制学习总结

本文深入探讨了Python中模块和包的概念,分析了在XXX项目podmanager模块中引用oslo配置模块时出现的cfg模块不存在异常。文章详细解释了Python模块和包的区别,以及import语句的工作原理,提供了三种解决方案,包括调整文件目录结构、修改Python安装路径和使用sys.path.append临时加入模块路径。

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

问题引入:
在XXX项目的podmanager模块中引用oslo模块代码
例如引用oslo中的配置模块,一般代码编写通过下面代码先导入相关模块:
from oslo.config import cfg
但使用过程中却报cfg模块不存在异常。
问题分析:
首先,弄清楚什么是包,什么是模块。
模块(module):用来从逻辑上组织Python代码(变量、函数、类),本质就是后缀为py的文件。
包(package):定义了一个由模块和子包组成的Python应用程序执行环境,本质就是一个有层次的文件目录结构(必须带有一个__init__.py文件)。
导入什么模块就直接import什么模块就可以了,如果从包里导入某个模块就通过from 包 import 包.模块就可以了,导入包一样。
既然通过import能导入包和模块,那么import的实现原理是怎样的呢?查看资料说明import的原理是路径搜索或搜索路径,应该类似于我们用的C语言中的include。以通常的sys模块为例,查看如下:
在这里插入图片描述

上面打印有两个含义:当前py文件所在的文件夹和python安装路径。
也就是说直接import的模块必须位于这两个目录,如果不位于这两个目录,import 模块后执行相关操作就会报找不到相关模块问题。
解决办法:
1.把要导入的模块文件放到引用文件相同的目录,一般相同包下的文件都是采用该方式进行导入。
2.把要导入的模块放到安装路径下面目录,因为我本地安装到下面目录,因此为该目录。
C:\Program Files (x86)\Python37-32\Lib\site-packages
3.通过sys.path.append将模块临时加入,如下:
Sys.path.append(模块路径)
import 模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值