为什么Python中sys.path的起始元素是空字符串?
为什么Python的sys.path总是以空字符串''开头?
哈哈,这个问题我之前也琢磨过,其实这个空字符串是Python的一个贴心设计——它代表的是你当前运行Python时所在的工作目录。
Python把它放在sys.path的最开头,就是为了让你能直接导入当前目录下的模块,不用额外折腾路径配置。举个实际例子:假设你在/home/me/my_code文件夹下新建了一个tools.py,然后你在这个文件夹里打开Python交互窗口,直接写import tools就能成功导入,根本不用把这个目录手动加到sys.path里——全靠这个开头的空字符串在起作用,Python会优先在当前目录里找你要导入的模块。
再给你拆解下不同场景的逻辑:
- 如果你是直接敲
python进入交互式命令行,sys.path第一个元素就是空字符串,对应你启动命令时所在的文件夹; - 如果你是运行某个脚本文件(比如
python my_script.py),这时候sys.path的第一个元素会变成脚本所在的目录路径,但如果是在IDE的交互式窗口里,或者脚本里特意配置过,还是会看到空字符串。
简单说,这个空字符串就是Python给你的快捷通道,让当前目录的模块能被优先搜索到,省去了手动配置路径的麻烦。要是你真的不想让它优先搜索当前目录,也可以手动把它从sys.path里删掉,比如sys.path.pop(0),不过一般没必要这么做,毕竟默认逻辑就是为了方便开发嘛。
代码示例:
import sys print(sys.path) # 输出会是类似 ['', '/usr/lib/python3.8/site-packages', ...] 的格式
内容的提问来源于stack exchange,提问作者Sam Murphy
相关产品推荐
相关产品推荐

