python | 深刻理解sys.path.append方法的用法

sys模块的功能

sys.path.append() 方法是 Python 中用于动态添加搜索路径的工具。sys.path 是一个由字符串组成的列表,它定义了 Python 解释器在导入模块时搜索模块的路径。当你使用 sys.path.append() 方法时,你实际上是在列表的末尾添加一个新的路径。

  • 用途

    导入自定义模块:如果你有自定义的 Python 模块或包,它们不在标准库或安装的第三方库的路径中,你可以使用 sys.path.append() 来添加包含这些模块的目录。

开发中的模块:在开发过程中,你可能需要导入尚未安装到环境中的模块。通过添加模块所在的目录到 sys.path,你可以在开发过程中直接导入这些模块。

避免命名冲突:如果你的模块名与标准库中的模块名相同,通过添加自定义模块的路径,你可以确保你的模块被优先导入

实战认识

  • 功能结构如下

在这里插入图片描述

  • 代码
模块内容
module1.py:

# module1.py
def greet():
    return "Hello from module1"
module2.py:

python
# module2.py
def greet():
    return "Hello from module2"
主程序
main.py:
import sys
import os


# 获取当前文件的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
print('*'*100)
print('current_file_path:',os.path.abspath(__file__))

print('current_dir:',current_dir)
print('before _  sys.path ',sys.path)

from package.module1 import greet as greet1
from package.module2 import greet as greet2

def main():
    print(greet1())
    print(greet2())

if __name__ == "__main__":
    main()

不使用sys.path.append方法

在这里插入图片描述

-主要查看before_sys.path

before_sys.path  
['E:\\GitRepository\\PythonModuleLearn\\sys_append_test', # 本机目录
'E:\\GitRepository\\PythonModuleLearn', '  # 本工程目录
...]

观察上述结果可知,模块下的learnTest没有加载到路径中,导致 Python 解释器在导入模块时搜索不到

使用sys.path.append方法

  • 修改main.py
    在from导入模块之前动态加载到python解释器的路径中
# 将  目录添加到 sys.path
sys.path.append(os.path.join("../learnTest"))
print('after _  sys.path ',sys.path)
print('*'*100)
  • 结果

在这里插入图片描述

****************************************************************************************************
before_sys.path  ['E:\\GitRepository\\PythonModuleLearn\\sys_append_test',
'E:\\GitRepository\\PythonModuleLearn',
...]
after_sys.path  ['E:\\GitRepository\\PythonModuleLearn\\sys_append_test', 
'E:\\GitRepository\\PythonModuleLearn',
...
'../learnTest']

查看after_sys.path发现’…/learnTest’在Python 解释器搜索路径上,虽然文件标红,但是不影响运行

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胜天半月子

打不打商的无所谓,能帮到你就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值