ModuleNotFoundError: No module named ——关于Python模块那些事儿
谈到模块,不得不提起Pytho程序本身的架构。一般来说,一个Python程序包括多个含有Python语句的文本文件,程序就是作为一个主体、顶层的文件来构造,配合0~多个支持的文件,而这些文件就是模块。模块文件在运行时无需做任何事,当一个文件导入一个模块从而获得该模块定义的工具的访问权,那么该工具就是这个模块的属性
顶层文件:程序的主要控制流程
模块文件:工具库,提供给顶层文件使用的组件
导入的实质
当程序执行时,且是第一次导入时,会执行以下步骤:
1.找到该模块文件
2.将其编译成位码(需要时)
3.执行模块的代码并创建其所定义的对象
这三部走完,Python会将载入的模块存储到sys.modules表中,并在导入后检查该表,若模块不存在就会重新执行以上三步
回到现实,在日常工作中,经常能碰到导包失败的情况,程序是死的,它只能通过人设置好的路径是查找给定的包。这就涉及到Python包的搜索路径sys.path。
搜索路径
1.程序的主目录:即顶层文件所在目录
2.PYTHONPATH目录:跨目录使用
3.标准链接库目录:安装在机器上本身的目录,一定会被搜索到
4.任意.pth文件的内容:同跨目录使用,配置环境变量的一种替代方案,可将其放在顶层文件目录或标准链接库目录下
导入的方式
1.import 直接导入
一般用于导入内置模块或第三方库
import sys import Person as ps #别名
导入后使用时,需要加上模块名的限定,如:person=Person.Person('xiaozhou')
2.from package import funcname
from 包名.模块名 import 类名/方法名,从指定模块中导入具体方法,推荐用法
from sys import version from sys import version,executable from sys import *
导入后使用时,可直接对import的类/方法名进行操作,如:person=Person(' xiaozhou ')
3. mymodule=__import__(' modulename '),不推荐该写法,可读性很差
另外,跨目录还有一种导入方法,即:在顶层文件中手动添加sys.path,注意要先添加路径,后执行导入操作
sys.path.append('E:\\insertdir')
本文来自博客园,作者:我永远喜欢石原里美,转载请注明原文链接:https://www.cnblogs.com/yuan-zhou/p/16033865.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!