python开发时sys.path.append引用模块相关方法

Python模块引用:sys.path详解与应用
文章介绍了Python中的sys.path,它是Python解释器搜索模块的路径列表。通过sys.path.append()可以添加自定义路径来引用本地未安装的库或在库内部进行模块间调用。推荐使用相对路径以适应库位置变化。文章提供了具体的导入模块的示例,并强调了模块设计应遵循高内聚、低耦合原则。

系列文章目录



前言

在软件设计模块时应该遵从高内聚(high cohesion),低耦合(Low Coupling)的整体思路,从而使程序模块的可重用性、可移植性提高。
而如何实现python库中,不同层级之间模块与模块之间的相互调用和最后加载呢?本文通过sys模块中提供的功能,提供一种解决方案。


一、sys.path是什么?

当导入一个模块时: import xxx ,默认情况下python解释器会搜索当前目录、已安装的内置模块和第三方模块。
搜索路径存放在sys模块的path中。【即默认搜索路径可以通过sys.path打印查看】
sys.path是一个列表 list ,它里面包含了已经添加到系统的环境变量路径,可以在sys.path下加入所需import模块的路径,使用sys.path.append()实现

二、使用场景及相应方法

若开发的框架未安装,在以往的项目中得到以下经验:需要将开发的代码存放在一个地方,进行调用。而非将该库复制到项目的目录下。这样可以确保版本的一致。

1.引用本地开发未安装的库

因为已经固定了开发代码位置,因此可在sys.path 下 加入库文件根目录所在位置的绝对路径

import sys

sys.path.append(r'A绝对路径')

2. 库内的模块之间互相调用

由于库的位置会发生变化,因此在库内的模块间互相调用,最好使用相对路径。

import sys
sys.path.append('..') : 引用上一级目录地址
sys.path.append('../..') : 引用上两级目录地址

三、引用方法

引用时需要引用具体模块名字
使用

import 模块 as 模块名

文中以以下的路径为例子

路径:
A:
	B
		C.py
	D
		E
			F.py
		G.py
import D.E.F as F
import B.C as C
import D.G.function_name as function_name

from B import C
from D.E import F

总结

该文章主要针对开发python时模块间的互相调用的方法介绍,以及相关语法注意事项。

### 回答1: 在Python中,sys.path是一个列表,用于存储模块的搜索路径。当我们使用import语句导入模块Python会在sys.path中列出的路径中搜索相应的模块。 使用sys.path.append()函数可以向sys.path列表中添加新的搜索路径。如果我们想要导入上级目录中的模块或子文件,就可以使用sys.path.append()函数添加上级目录的路径。 例如,假设我们有一个文件夹结构如下: ``` project/ module/ __init__.py module.py utils/ __init__.py utils.py main.py ``` 如果我们想在main.py中导入module.py和utils.py,就可以使用sys.path.append()函数添加相应的搜索路径: ```python import sys sys.path.append('../module') sys.path.append('../utils') import module # 导入module.py import utils # 导入utils.py ``` 在上面的代码中,我们将../module和../utils分别添加到sys.path中,使得Python可以在这两个路径中搜索相应的模块。 需要注意的是,使用sys.path.append()函数添加搜索路径并不会永久生效,只会在当前会话中有效。如果想要永久添加搜索路径,可以修改PYTHONPATH环境变量。 ### 回答2: python中,sys.path.append()是用来添加模块搜索路径的函数,使用该函数可以将所需的模块路径添加至系统模块搜索路径列表中。 sys.path.append() 是向sys.path列表末尾 添加一个模块搜索路径。在Python中,一个包package通常包含多个模块module,这些模块通常保存在同一个文件夹下,该文件夹就是这个包的目录。使用sys.path.append()函数可以将这个目录添加到Python模块搜索路径列表中,从而能够快速地找到该目录下的所有模块。 例如,我们在项目中需要使用上一级目录中的模块,此可以使用sys.path.append()函数将上级目录添加到模块搜索路径列表中。具体实现可以按以下步骤进行: 1.使用os模块获取当前文件所在的目录路径,这可以通过os.path.dirname(__file__)函数来实现。 2.使用os.path.abspath()函数获取当前目录的绝对路径。 3.使用os.path.join()函数将当前目录的父目录与要添加的路径拼接起来,即可得到上级目录中的路径。 4.使用sys.path.append()函数将上级目录路径添加至模块搜索路径列表中。 下面是一个简单的示例代码,假设我们需使用上级目录中的模块mymodule作为一个函数: ``` python import os import sys # 获取当前文件所在的目录路径 cur_path = os.path.dirname(__file__) # 获取当前目录的绝对路径 cur_path = os.path.abspath(cur_path) # 获取上一级目录的路径 parent_path = os.path.join(cur_path, '..') # 将上级目录路径添加到sys.path列表末尾 sys.path.append(parent_path) # 导入上级目录中的mymodule模块 import mymodule # 调用mymodule中的函数 mymodule.myfunction() ``` 以上代码将上级目录路径添加到模块搜索路径列表中,因此可以成功地导入上级目录中的模块。其中,mymodule是上级目录中的模块,myfunction是mymodule模块中的一个函数。 ### 回答3: 在Python中,sys.pathPython搜索module的路径列表,所有在该列表中的路径下的module都可以被Python引入并使用。常见的情况是,我们需要使用自己或他人编写的库,但是这些库文件并不在Python内置库或Python安装目录下,而是放在自定义路径下,为了能够让Python找到这些库文件,就需要将这些路径添加到sys.path中。 在添加路径,不仅可以添加当前目录、Python内置库、Python安装目录等路径,还可以添加上级目录下的子目录路径,以此使Python可以直接找到这些包和模块。 使用sys.path.append()函数可以将路径添加到sys.path中,可以添加绝对路径或相对路径。在添加上级目录子文件的路径,可以使用os模块和os.path模块来获取指定路径的上级目录路径,并通过sys.path.append()来添加上级目录子文件的路径。 例如,我们可以在当前Python文件中添加上级目录子文件的路径方式如下: import sys import os #获取当前文件的路径 current_path = os.path.abspath(__file__) #获取当前文件的上级目录路径 current_dir = os.path.dirname(current_path) #获取上级目录的上级目录路径 parent_path = os.path.abspath(os.path.join(current_dir, "..")) #添加上级目录子文件 sys.path.append(parent_path) 这样,我们就可以通过Python的import语句直接引入上级目录子文件中的模块和子模块了。通过该方法,我们可以更方便地调用上级目录下子文件中的模块,使得项目的模块结构更加清晰合理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值