TLDR;如果程序包位于同一目录中,则它们优先于相同名称的模块。
从文档:
“当
spam导入一个名为的模块时,解释器会spam.py在当前目录中搜索一个文件,然后在环境变量指定的目录列表中搜索PYTHONPATH。这具有与shell变量PATH相同的语法,即目录名称。”
这有点误导,因为解释器还会寻找一个名为的包
spam(一个
spam包含
__init__.py文件的目录)。由于目录条目是在搜索之前进行排序的,因此,如果程序包位于同一目录中,则它们优先于具有相同名称的模块,因为它们位于
spam之前
spam.py。
请注意,“当前目录”是相对于主脚本路径(where
__name__ == '__main__' isTrue)。因此,如果您正在
/home/billg通话
/foo/bar.py,则“当前目录”是指
/foo。



