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方法
在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 解释器搜索路径上,虽然文件标红,但是不影响运行
作者:胜天半月子