找回密码
 会员注册
查看: 44|回复: 0

pythonimport:跨文件夹导入模块

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
67432
发表于 2024-9-4 21:39:24 | 显示全部楼层 |阅读模式
python中import语句可以往当前py文件中导入外部模块,从而使用外部模块中的函数与类。如果想要导入python内置模块和pipinstall安装的模块,可以直接使用“import…”的形式导入。如果想要导入自己本地定义的模块(即跨文件夹导入),则有一些其他注意事项。1.import导入模块原理在说明如何跨文件夹导入模块之前,首先应该介绍一下import导入的原理:import语句导入模块时,会根据系统环境变量指示的路径,在对应文件夹中查找与要导入的模块名相符合的模块,若在所有路径指示的文件夹中都没有找到对应模块,则会引发ModuleNotFoundError。跨文件夹导入本地模块时也是同理,若想要正确导入本地模块,则需要将该模块所在文件夹路径加入当前环境变量。使用sys库中“sys.path.append(‘对应路径’)”可以做到(具体使用示例见下文)。2.区分包(package)与模块(module)模块(module)是一个py文件的形式,里面可能包含多个函数、类,通常用来实现某种或某几种特定功能。包(package)是一个文件夹的形式,文件夹中包含许多模块(py文件),这些模块通常有着共同点,都是为了实现某类功能。2.1.包文件夹中的__init__.py文件在python3.2及之前的版本,包中必须包含__init__.py文件(即使为空),在python3.3之后的版本,若__init__.py文件为空,则没有必要加入。若在包文件夹中加入__init__.py文件,则可以直接使用“from包名import函数名”的形式导入模块中的某个函数(具体使用示例见下文)。3.导入同级模块可直接使用“import模块名”形式进行导入。如下图,b.py为当前运行的py文件,导入a.py中定义的函数并运行。4.导入同级文件夹中的模块可使用“import包名.模块名”形式进行导入。如下图,b.py为当前运行的py文件,导入文件夹dir_a中aa.py中定义的函数并运行。若包中含有“__init__.py”文件,可直接使用“import模块名”形式进行导入。如下图,b.py为当前运行的py文件,导入文件夹dir_b中aa.py中定义的函数并运行。5.导入上级文件夹中的模块导入上级文件夹中的模块,需要将所需模块所在文件夹路径加入当前环境变量。5.1.使用sys.path.append添加被导入模块路径文件夹dir_b中bb.py为当前运行的py文件,想要导入上级文件夹中a.py中定义的函数,因此需将a.py所在文件夹路径加入当前环境变量。如下图,使用sys库中“sys.path.append(‘对应路径’)”实现。红框中为当前py文件所在文件夹路径,在执行当前py文件时,会自动添加到环境变量中,因此可直接导入同级模块。蓝框中为所需导入的模块所在的文件夹路径,添加到环境变量成功。5.2.导入上级文件夹中的模块将所需模块所在文件夹路径加入当前环境变量后,可直接使用“import模块名”形式进行导入。如下图,文件夹dir_b中bb.py为当前运行的py文件,导入上级文件夹中a.py中定义的函数并运行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-3 00:46 , Processed in 1.013200 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表