python sys.path.append()和sys.path.insert()的作用与区别

本文介绍了在Python中如何使用sys.path.append()和sys.path.insert()来管理模块的导入路径。sys.path是一个包含所有Python将要查找模块的路径列表。通过append()方法可以临时添加目录到搜索路径,方便导入模块,而insert()方法则允许设定搜索路径的优先顺序。这两个方法在程序退出后添加的路径都会失效。

python程序中使用 import XXX 时,python解析器会在当前目录、已安装和第三方模块中搜索 xxx,如果都搜索不到就会报错。
使用sys.path.append()方法可以临时添加搜索路径,方便更简洁的import其他包和模块。这种方法导入的路径会在python程序退出后失效。

  1. 加入上层目录和绝对路径
import sys
sys.path.append('..') #表示导入当前文件的上层目录到搜索路径中
sys.path.append('/home/model') # 绝对路径
from folderA.folderB.fileA import functionA
  1. 加入当前目录
import os,sys
sys.path.append(os.getcwd())
os.getcwd()用于获取当前工作目录
  1. 定义搜索优先顺序
import sys
sys.path.insert(1, "./model")
sys.path.insert(1, "./crnn")定义搜索路径的优先顺序,序号从0开始,表示最大优先级,sys.path.insert()加入的也是临时搜索路径,程序退出后失效。

参考python sys.path.append()和sys.path.insert()

Python中sys.path.append()的作用:
sys.path是一个列表 list ,它里面包含了已经添加到系统的环境变量路径。
当我们要添加自己的引用模块搜索目录时,可以通过列表 list 的 append()方法;

sys.path.append()

如图所示:在原有的路径之下,增加了一个**D:/vot2020/**的路径:
在这里插入图片描述

Python中sys.path.insert()的作用:

sys.path.insert()

如图所示:在原有的路径之下,增加了一个**D:/vot2020/**的路径:
在这里插入图片描述

python sys.path.append()和sys.path.insert()的同异:

不同:

  1. sys.path是个列表。
  2. 在列表末尾添加目录,用sys.path.append()。当这个append执行完之后,新目录即时起效,以后的每次import操作都会检查这个目录。
  3. 在列表的任意位置添加目录,选择用sys.path.insert(index,’/path’)这样新添加的目录会优先于其他目录被import检查。其中,index:列表索引,path,目录所在路径。

相同:

  1. 都是在sys.path列表中添加路径。

参考把目录添加成python可识别的目录:sys.path.insert(0,‘path‘)

### 如何正确使用 Python `sys` 模块的 `path.append` 方法添加自定义路径 `sys.path.append()` 是 Python 中用于动态添加模块搜索路径的方法。通过将路径添加到 `sys.path` 列表中,可以确保 Python 解释器在导入模块时能够找到指定路径下的模块[^1]。 以下是关于如何正确使用 `sys.path.append()` 的详细说明: #### 1. 理解 `sys.path` `sys.path` 是一个包含字符串的列表,这些字符串表示 Python 在导入模块时会搜索的路径。默认情况下,`sys.path` 包含当前工作目录、标准库路径以及环境变量 `PYTHONPATH` 中定义的路径[^2]。 #### 2. 使用 `sys.path.append()` `sys.path.append(path)` 会在 `sys.path` 列表的末尾添加一个新的路径。这意味着当 Python 查找模块时,它会按照从左到右的顺序检查所有路径,直到找到所需的模块为止[^3]。 以下是一个简单的代码示例,展示如何使用 `sys.path.append()` 添加自定义路径: ```python import sys # 添加自定义路径到 sys.path custom_path = "/path/to/your/module" sys.path.append(custom_path) # 验证路径是否成功添加 print(sys.path) ``` #### 3. 注意事项 - **临时性**:通过 `sys.path.append()` 添加的路径仅在当前 Python 会话中有效。一旦程序结束或解释器关闭,添加的路径将失效。如果需要永久添加路径,请参考其他方法,例如修改 `PYTHONPATH` 环境变量或将模块放置在 `site-packages` 目录下[^3]。 - **路径顺序**:由于 `sys.path.append()` 将路径添加到列表末尾,因此它具有较低的优先级。如果存在同名模块,Python 可能会优先加载其他路径中的模块。若希望新路径具有更高优先级,可以使用 `sys.path.insert(0, path)`[^4]。 #### 4. 应用场景 - **解决相对导入问题**:在大型项目中,直接运行某个脚本可能导致相对导入失败。通过将项目的根目录添加到 `sys.path`,可以确保 Python 正确识别包的层级结构[^4]。 - **测试外部模块**:在开发过程中,可以通过 `sys.path.append()` 临时添加外部模块的路径,而无需将其安装到全局环境中。 ```python import sys # 假设项目根目录为 /project/root sys.path.append("/project/root") # 现在可以从项目根目录导入模块 from my_package import my_module ``` #### 5. 示例:解决相对导入问题 假设项目结构如下: ``` /project/ main.py package/ __init__.py module.py ``` 如果直接运行 `package/module.py`,可能会遇到相对导入错误。通过在脚本开头添加以下代码,可以解决问题: ```python import sys import os # 获取项目的根目录 project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(project_root) # 现在可以进行相对导入 from .submodule import some_function ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值