python import:跨文件夹导入模块

python 中 import 语句可以往当前 py 文件中导入外部模块,从而使用外部模块中的函数与类。 如果想要导入 python 内置模块和 pip install 安装的模块,可以直接使用 “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 中定义的函数并运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设置浏览器ie兼容模式

点击设置 设置IE模式

Animation Clips

动画剪辑是Unity用来表示对象运动姿态的基础资源,你可以从模型文件中导入动画剪辑,也可以在Unity内部创建简单的动画剪辑。 Import Animation From Model 在导入时只需要确保模型的Animation选项卡中的Import Animation是被激活的,对于没有动…

华为诺亚发布无限上下文大模型,超越SoTA 4.3%

你的大语言模型是不是也患上了"长文健忘症"?当使用大模型遇到长上下文时总是会出现词不达意?别担心,LLM界的"记忆大师"来啦!华为诺亚方舟实验室最新推出的EM-LLM模型,就像是给大模型装上了"超…

典型二进制翻译系统---用户级翻译

目录 QEMU MDT HQEMU 补充 Valgrind 包括 CrossBit 补充 MTCrossBit Strata-ARM Box86 HQEMU SymQEMU QEMU 静态二进制翻译器 是一个开源的多平台的虚拟器,能够在软件中模拟一台机器 KVM(Kernel-based Virtual Machine)是 Linu…

内螺纹销主要应用优势及应用领域

内螺纹销是一种常见的机械连接件,它通常用于连接两个或多个零件,并通过其内螺纹结构来实现紧固和定位。这种零件的设计简单却非常实用,在各种工业领域中都能找到它的身影。下面我们就来了解一下内螺纹销的主要应用优势以及它们的应用领域。 应…

华测无人船为水库库容精准测量提供解决方案

水库作为融合防洪、供水、发电及生态维护等多重功能于一体的基础设施,其库容的精准测量对于水资源管理及防洪调度的科学决策具有举足轻重的地位。然而,随着水库使用年限的增加,泥沙淤积现象的加剧以及地理信息更新的滞后,库容复核已成为确保水库安全高效运行不可或缺的一环。 当…

自写ApiTools工具,功能参考Postman和ApiPost

近日在使用ApiPost的时候,发现新版本8和7不兼容,也就是说8不支持离线操作,而7可以。 我想说,我就是因为不想登录使用才从Postman换到ApiPost的。 众所周知,postman时国外软件,登录经常性抽风,…

Redis:管道

1. 面试题 如何优化频繁命令往返造成的性能瓶颈? 问题由来 edis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤: 1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket…

You have an error in your SQL syntax; check the manual that corresponds to your

You have an error in your SQL syntax; check the manual that corresponds to your 目录 You have an error in your SQL syntax; check the manual that corresponds to your 【常见模块错误】 【解决方案】 欢迎来到我的主页,我是博主英杰,211科班…

python+vue3+onlyoffice在线文档系统实战20240725笔记,首页开发

解决遗留问题 内容区域的高度没有生效,会随着菜单的高度自动变化。 解决方案:给侧边加上一个最小高度。 首页设计 另一种设计: 进来以后,是所有的文件夹和最近的文件。 有一张表格,类似于Windows目录详情&…

每日一题,力扣leetcode Hot100之560.和为K的子数组

解法一: 暴力解法循环直接判断从每个index开始的切片是否满足 class Solution:def subarraySum(self, nums: List[int], k: int) -> int:# 要求的连续子数组count 0n len(nums)for i in range(n):for j in range(i, n):if sum(nums[i:j1]) k:count 1return…

科研绘图系列:R语言山脊图(Ridgeline Chart)

介绍 山脊图(Ridge Chart)是一种用于展示数据分布和比较不同类别或组之间差异的数据可视化技术。它通常用于展示多个维度或变量之间的关系,以及它们在不同组中的分布情况。山脊图的特点: 多变量展示:山脊图可以同时展示多个变量的分布情况,允许用户比较不同变量之间的关…

STM32CubeIDE代码字体大小

进入首选项设置 搜索editor,按照图中标号,进行设置 按图中标号进行设置,选择需要的字号 到此设置完成

C++STL详解(五)——list类的接口详解

一.list的介绍 list容器的底层是双向循环带头链表,在CPP中,我们对双向循环带头链表进行了一定程度的封装。 如果你不了解双向链表,那么可以浏览此片博文:双向链表 二.list的定义方式以及赋值 2.1list的构造方式 在这里我们要…

英特尔宣布针对对Llama 3.1进行优化 以提升所有产品的性能

日前Meta正式发布了Llama 3.1开源大模型,以其庞大的参数量和卓越性能,首次在多项基准测试中击败了GPT-4o等业界领先的闭源模型。允许开发者自由地进行微调、蒸馏,甚至在任何地方部署,这种开放性为AI技术的普及和创新提供了无限可能…

具备音视频指挥调度能力的指挥中心需要接入哪些设备呢?

近年来,具备音视频能力的指挥调度系统在各行各业中应用广泛,通过音视频的通信调度能力,为行业提供灵活的指挥调度功能,实现行业多种音视频应用场景的运用,满足企业更好地完成企业安全生产、应急协调等工作的需求。 华…

代码随想录训练营 Day13打卡 二叉树 part01 递归遍历 迭代遍历 层序遍历

代码随想录训练营 Day13打卡 二叉树 part01 一、 二叉树理论基础 二叉树是一种重要的数据结构,用于表示具有层次关系的数据。二叉树的每个节点最多有两个子节点,通常称为左子节点和右子节点。 种类 普通二叉树: 节点最多有两个子节点&…

Hadoop3:HDFS的客户端工具Big Data Tools(IDEA版本)

1、安装插件 在Plugins里搜索Big Data Tools 安装完成后,重启IDEA 2、配置Windows环境 主要是配置Hadoop环境,否则无法通过插件远程连接HDFS 1、解压hadoop安装包 2、进入hadoop的bin目录 放入图中标红的两个文件 3、配置hadoop环境变量 新建HAD…

这个暑假适合港澳游?免税额度提升、专属暑期活动、餐饮娱乐攻略

2024年7月1日免税额度的新政实施,在香港澳门消费的免税额度将达到15000元。这也让今年夏天的港澳旅游多了几分吸引力,如果有计划趁着这个暑假前往港澳旅游的话,这篇港澳游攻略一定能帮到你! 【民以食为天,旅游第一步—…

“多分辨率图网络”的模型:准确识别卵巢癌各种亚型

卵巢癌发病率居我国女性生殖系统恶性肿瘤第3位,死亡率居妇科恶性肿瘤之首,其特点是存在异质性的组织学亚型。最常见的五种亚型,占所有卵巢癌的90%,分别是高级别浆液性癌(HGSC)、低级别浆液性癌(…