Python引入其他文件夹里的.py文件的方法!

python如何引入外部文件? 在Python中,一个`.py`文件就可以看作是一个模块。模块可以包含函数、类和变量等定义。通过将代码组织成模块,可以提高代码的可维护性和复用性。例如,有一个`math_utils.py`文件,里面定义了一些数学运算相关的函数,如`add_numbers`和`multiply_numbers`,这个文件就是一个模块。 阅读详情
AI摘要

在Python开发中,为保持代码模块化和可维护性,常需从一个文件夹引入另一个文件夹的.py文件。本文详细介绍了使用sys.path动态添加路径、相对导入、PYTHONPATH环境变量、importlib动态导入模块、pkgutil和pkg_resources等方法,还说明了各方法适用场景与注意事项。

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】

在Python开发中,随着项目规模的增大,代码通常会分散在多个文件夹中。为了保持代码的模块化和可维护性,我们经常需要从一个文件夹中引入另一个文件夹中的Python文件。本文将详细介绍如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式。

1. 使用sys.path动态添加路径
Python在导入模块时,会按照sys.path中的路径顺序进行查找。默认情况下,sys.path包含当前脚本所在的目录、Python安装路径以及一些环境变量指定的路径。如果我们需要引入其他文件夹中的.py文件,可以通过动态修改sys.path来实现。

示例代码
假设我们有以下目录结构:

project/
│
├── main.py
└── utils/
    └── helper.py

我们希望在main.py中引入utils/helper.py中的函数。

# main.py
import sys
import os

# 动态添加utils文件夹的路径
sys.path.append(os.path.join(os.path.dirname(__file__), 'utils'))

import helper

helper.say_hello()
# utils/helper.py
def say_hello():
    print("Hello from helper!")

解释
sys.path.append():将utils文件夹的路径添加到sys.path中,使得Python在导入模块时能够找到helper.py。

os.path.join()和os.path.dirname(file):用于动态获取当前脚本所在的目录,并拼接出utils文件夹的路径。

注意事项
这种方法虽然简单,但在大型项目中可能会导致sys.path变得混乱,不利于维护。

如果路径添加不当,可能会导致模块冲突或导入错误。

2. 使用相对导入(适用于包结构)
如果你的项目是一个包(即包含__init__.py文件的文件夹),可以使用相对导入来引入其他文件夹中的模块。

示例代码
假设我们有以下目录结构:

project/
│
├── main.py
└── utils/
    ├── __init__.py
    └── helper.py

我们希望在main.py中引入utils/helper.py中的函数。

# main.py
from utils.helper import say_hello

say_hello()
# utils/helper.py
def say_hello():
    print("Hello from helper!")

解释
from utils.helper import say_hello:通过包名和模块名来导入helper.py中的say_hello函数。

init.py:这个文件的存在使得utils文件夹被视为一个Python包。

注意事项
相对导入只能在包内使用,且需要确保包的结构清晰。

如果项目结构复杂,相对导入可能会导致导入路径混乱。

3. 使用PYTHONPATH环境变量

PYTHONPATH是一个环境变量,用于指定Python在导入模块时搜索的额外路径。通过设置PYTHONPATH,我们可以在不修改代码的情况下引入其他文件夹中的模块。

示例代码
假设我们有以下目录结构:

project/
│
├── main.py
└── utils/
    └── helper.py

我们希望在main.py中引入utils/helper.py中的函数。

在Linux/MacOS中设置PYTHONPATH

export PYTHONPATH=$PYTHONPATH:/path/to/project/utils

在Windows中设置PYTHONPATH

set PYTHONPATH=%PYTHONPATH%;C:\path\to\project\utils

在main.py中导入模块

# main.py
import helper

helper.say_hello()

解释
PYTHONPATH:通过设置这个环境变量,Python会在导入模块时搜索指定的路径。

这种方法不需要修改代码,适合在多个项目中共享模块。

注意事项
需要确保PYTHONPATH设置正确,否则可能导致导入失败。

在团队协作中,可能需要统一环境变量的设置。

4. 使用importlib动态导入模块
importlib是Python标准库中的一个模块,提供了动态导入模块的功能。通过importlib,我们可以在运行时动态加载其他文件夹中的模块。

示例代码
假设我们有以下目录结构:

project/
│
├── main.py
└── utils/
    └── helper.py

我们希望在main.py中引入utils/helper.py中的函数。

# main.py
import importlib.util
import sys
import os

# 获取helper.py的路径
module_path = os.path.join(os.path.dirname(__file__), 'utils', 'helper.py')

# 动态加载模块
spec = importlib.util.spec_from_file_location("helper", module_path)
helper = importlib.util.module_from_spec(spec)
sys.modules["helper"] = helper
spec.loader.exec_module(helper)

helper.say_hello()
# utils/helper.py
def say_hello():
    print("Hello from helper!")

解释
importlib.util.spec_from_file_location():根据文件路径创建一个模块规范。

importlib.util.module_from_spec():根据模块规范创建一个模块对象。

spec.loader.exec_module():执行模块代码,将其加载到内存中。

注意事项
这种方法适用于需要动态加载模块的场景,但代码较为复杂,不适合常规使用。

动态导入可能会导致代码的可读性和可维护性下降。

5. 使用pkgutil和pkg_resources(适用于包资源)

如果你的项目是一个包,并且需要加载包内的资源文件,可以使用pkgutil或pkg_resources来动态加载模块。

示例代码
假设我们有以下目录结构:

project/
│
├── main.py
└── utils/
    ├── __init__.py
    └── helper.py

我们希望在main.py中引入utils/helper.py中的函数。

# main.py
import pkgutil
import importlib

# 动态加载utils包中的helper模块
helper = importlib.import_module('utils.helper')

helper.say_hello()
# utils/helper.py
def say_hello():
    print("Hello from helper!")

解释
importlib.import_module():动态导入指定模块。

pkgutil:提供了对包资源的访问功能。

注意事项
这种方法适用于包内模块的动态加载,但需要确保包结构清晰。

在大型项目中,动态加载可能会导致性能问题。

总结
在Python中引入其他文件夹里的.py文件有多种方法,每种方法都有其适用的场景和注意事项。对于小型项目,使用sys.path动态添加路径是最简单的方式;对于包结构的项目,相对导入和PYTHONPATH是更好的选择;而对于需要动态加载模块的场景,importlib和pkgutil提供了灵活的解决方案。

根据项目的实际需求选择合适的方法,可以有效地提高代码的可维护性和可读性。希望本文对你理解Python中模块导入的方式有所帮助!

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里领取!】
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

在这里插入图片描述

【Python】 如何在Python中导入其他Python文件? 导入模块是Python编程中的一项基本技能,它允许你重用代码并保持代码的组织性。通过理解不同的导入方法和注意事项,你可以更有效地使用Python模块,编写清晰、可维护的代码。记住,合理地组织和导入模块是成为一名优秀Python开发者的关键步骤之一。在Python编程中,我们经常需要将代码组织成模块,以便于重用和维护。导入模块可以让你访问其他文件中定义的函数、类和变量等。> 【痕迹】QQ+微信朋友圈和聊天记录分析工具1.0.4 (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。 阅读详情

相关推荐

如何在Python中调用另一个文件中的代码?

总之,在Python中调用另一个文件中的代码是非常简单的,只需要通过模块的导入来实现即可。同时,在开发过程中,我们应该遵循良好的编程习惯,将代码封装在不同的模块中,提高代码的可重用性和可维护性。在Python编程中,我们经常需要调用其他文件中的代码来实现复杂的功能。这时,我们可以使用Python的模块机制,将代码封装在不同的模块中,并通过导入模块的方式来调用其中的函数和变量。需要注意的是,在使用from-import语句时,我们只能导入模块中定义的变量和函数,而不能导入模块中的其他内容。

. 3806

python:引用其他不同目录下的python文件

目录 前言 引用方式 同级目录 引用上下级目录 引用不同级目录 引用深层目录 推送 结语 前言 出入python的时候对python的引用过程有诸多不接,留一篇文章做记录吧,本篇主要记录使用__init__来引用python脚本 引用方式 同级目录 import py_2 import py_2 as p2 如上图所示,在同级目录下,py_1.py想要引用py_2.py只需要如上述代码所示,直接import就可以了,如果想引用后重新定义,则加个as

孙君的空间站 1万+

pe卸载win10更新补丁_禁用Win10系统更新

众所周知,最近WIN10的强制更新导致了很多问题。如:(部分专业软件系统更新后无法使用,硬件中键盘、鼠标、指纹之类的硬件,更新补丁后失灵等问题)。而之前的禁用WindowsUpdate的方法已经失效。下面我们另辟蹊径,利用系统权限的方法使Win10无法更新,达到禁用更新的目的。1.计算机管理-服务中禁用Windows Update服务。2.打开C:\Windows\softwareDistribu...

weixin_39702479的博客 1万+

Python如何引用其他文件夹下的py文件

如果将my_abs()函数定义保存为abstest.py文件,那么在该文件所在目录下,启动解释器,输入from abstest import my_abs,就可以执行my_abs函数。引用包时,系统根据环境变量多条路径先后顺序寻找。若恰巧,你即将引入的包名已经在以前的环境变量路径中存在,则发生引用错误。直接引用没有效果的原因,是该文件所在路径并未在系统环境变量中记录。首先,先将包所在文件夹添加至系统环境变量。若要引用的包与文件不在同一个文件夹下。那么,如何引用其他文件夹下的py文件。

oJinGangZuan的博客 1万+

Wonderware Intouch 2014R2 SP1 安装教程

下载Wonderware System Platform 2014R2 SP1 and Intouch 2014R2 SP1的安装压缩包,如下 软件的下载连接地址如下: https://pan.baidu.com/s/1a2GnI_nfT3vK1l49B94FIQ, 提取码:6ec6 或者直接微信扫描下面的二维码 管理员运行下面的setup.exe可执行程序, 进入安装,选择Product Based Selection, 自定义选择需要安装的程序,如下: 普通的Into

工控先生 3万+

Windows 11“此应用已被管理员阻止运行”解决方案

通过本文介绍的两种方法,你应该能够解决Windows 11中“此应用已被管理员阻止运行”的问题。无论你选择创建新管理员账户还是禁用管理员批准模式,都请确保了解相关操作的风险,并根据你的实际需求做出选择。通过禁用“用户账户控制:以管理员批准模式运行所有管理员”设置,可以解决因系统安全设置导致的应用程序被阻止运行的问题。这种方法适用于那些希望简化管理员账户操作流程的用户,但需要注意可能带来的安全风险。通过创建并登录具有管理员权限的新账户,可以解决因系统安全设置导致的应用程序被阻止运行的问题。

mmoo_python的博客 1万+

python引用不同目录的py文件

Python,代码示例相关视频讲解:python的or运算赋值用法用python编程Excel有没有用处?011_编程到底好玩在哪?查看python文件_输出py文件_cat_运行python文件_shelPython引用不同目录的py文件 在Python编程中,我们经常会遇到需要引用其他目录中的.py文件的情况。这...

weixin_42376940的博客 1424

把外部系统一键装进 SAP Build Work Zone:从零开始创建 HTML5 URL App

HTML5 URL App 是一种轻量级解决方案,可将外部网页或系统入口快速集成到SAP企业门户中。开发者只需在manifest.json中配置目标URL、导航模式等参数,无需开发完整前端应用。该方案利用SAP BTP的HTML5 Application Repository集中存储静态资源,通过HTML5 Apps Content Provider将应用暴露给子账号,最终在SAP Build Work Zone中以Fiori磁贴形式呈现。文章详细介绍了manifest.json的关键配置、三种基础设施组件

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 241

python引入其他文件夹里的py文件的方法

在写python框架的时候,经常会用到引入其他文件夹里的python文件,要是都在同目录下的还好,直接import就好了,可是有的不在同一个目录,很多初学者就发现直接import报错了 1.如果是同目录下的引入 如下图,test_a.py和test_b.py文件都在同一个目录 要在test_b里引入test_a的话,直接在test_b里import 2.在不同文件夹里引入 如果工程目录是这样的,想要在test_d里引入test_c.py文件 test_c.py里有个方法c,如图 import

shenshenruoxi的博客 10万+

Win10 开机突然蓝屏错误代码0xc0000001安全模式也进不了,不用重装系统怎么修复?(已解决)九个解决参考方案

Win 10专业版HP480G7。

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 1万+

什么是 SAP Fiori 的 Technical Catalog

笔者之前的文章曾经提到一个叫做本文介绍 Technical Catalog 这个概念在 SAP Fiori 技术体系中的作用。首先我们如何在系统里查看这个 Catalog SAP_BASIS_TCR_T 里面包含的内容呢?如果大家照着本文开头那篇文章里提到的步骤,那么在自己系统里会创建好名叫的 PFCG role.我们登录 ABAP 系统,启动事务码 PFCG,打开这个 role, 就能看到它。展开之后,发现它扮演着一个容器的角色,里面包含了很多 ABAP 对象。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 742

python导入其他py文件-python如何引用其他py文件里的函数

python引用其他py文件里的函数方法Python中在脚本中引用其他文件函数的方法在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址。所以如果要在当前脚本引用其他文件,除了将文件放在和脚本同一目录下,还有以下几种方法,1. 将文件所在位置添加到sys.path中import syssys.path....

weixin_37988176的博客 6675

无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案

本文主要介绍了无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方案,希望能对使用wIndows的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

python调用自己写的py文件

python如何调用自己写的py文件呢? 同一个目录下直接写import xx就好了,xx为自己要调用的模块名字,虽然会有下划线报错,其实,没有错,仍然可以调用,之前一直都被报错吓住了 ...

lidashent的博客 3万+

全新DEIM有效涨点改进目录 | 本专栏持续更新500+篇内容 | 包含各种顶会顶刊卷积、注意力、特征融合模块、有效特征聚合提取模块,上采样模块、下采样模块,二次创新模块、独家创新等几百种创新点改进

🚀【CVPR2025DEIM改进专栏速览】🔥 专栏提供500+篇目标检测创新改进方案,涵盖卷积/注意力/特征融合等创新改进点,均源自顶会论文及实战经验。支持多领域应用(工业/医疗/遥感等),配套完整教程和答疑服务。亮点包括: 1️⃣ 持续更新SOTA模型改进方案 2️⃣ 小白友好型实验操作指南 3️⃣ 跨学科科研支持(已助非计算机专业发表论文) 4️⃣ 提供虚拟环境配置方案。 订阅可获完整项目代码及交流群服务,适合研究生科研论文改进需求。价格呈上涨趋势,早订更优惠!

Ai缝合怪、助力小伙伴高效发论文 2049

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python 引入中文py文件

Python 实现引入中文py文件作为模块使用,动态引入和加载模块

gongzairen的博客 1858

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python引用文件的方法_Python引用(import)文件夹下的py文件的方法

Python引用(import)文件夹下的py文件的方法发布于 2014-08-31 22:14:11 | 141 次阅读 | 评论: 0 | 来源: 网友投递Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能...

weixin_42615743的博客 7650

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python 一个.py文件如何调用另一个.py文件中的类和函数【转载】

转载https://blog.csdn.net/winycg/article/details/78512300 https://www.linuxidc.com/Linux/2019-05/158423.htm 在同一个文件夹下,调用函数 A.py文件: def add(x,y): print('和为:%d'%(x+y)) B.py文件: import A A.add(1,...

lak的专栏 2万+

Python2.7:引用(import)文件夹下的py文件的方法

文件夹包含内容: 在new.py中引入: 在被引入的文件夹下必须有 __init__.py文件(空白的也无所谓)可以自己新建。

u012369599的专栏 4536

python怎么调用另一个py文件的变量,Python中py文件引用另一个py文件变量的方法

Python中py文件引用另一个py文件变量的方法最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下:demo1代码import requestsr = requests.get("http://www.baidu.com")r.encoding = r.apparent_encodingdemo = r.textdemobeauful1代码...

weixin_29790897的博客 1万+

python导入其它py文件的方法和类

一、在同一目录下 1、导入自己定义的方法 a.py和b.py在桌面上 在a.py文件中定义如下方法: def sol(c): print(c*2) 在b.py文件中导入这个方法: 直接导入文件 import a sol(3) 输出结果: runfile('C:/Users/CZPZ/Desktop/untitled0.py', wdir='C:/User...

qq_33716688的博客 2万+

python引入文件夹中的文件

此文章为菜鸡学习记录,如有错误不足,还请大佬指正 文章目录一、引入同一目录下的py文件二、引入不同目录下的文件1、 调用子目录下的文件2、导入上级目录下的文件关于 _ _ init_ _.py 在写python程序的时候,经常会用到引用其他的.py文件,如何使用import进行引入,下面将进行介绍: 一、引入同一目录下的py文件 如下图,main.py和deeplabv2.py在同一个文件夹内 -|model -|deeplabv2.py -|main.py 如果想在main.py文件内引入d.

ZwaterZ的博客 9869

Python中module文件夹里__init__.py的功能

一般来说,需要引用python模块,可以用如下形式: import xxx import xxx as xx from xxx import xx 比如我们引入numpy模块: In [21]: import numpy In [22]: numpy Out[22]: <module 'numpy' from '/home/chia/anaconda2/lib/python2.7/sit...

VisualCortex 4425

利用python批量创建文件夹、批量创建文件、批量复制文件到指定文件夹

python创建文件夹mkdir,python批量创建文件夹;python如何批量创建文件;python如何批量复制文件到指定文件夹;python复制文件shutil

bingocoder的博客 9143
上一篇: 2025超详细Pycharm安装教程,看这一篇足以!
下一篇: 使用Python制作专属桌面宠物:详细教程!
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值