我想这之前已经回答过了,但我找不到一个准确描述搜索过程的线程。抱歉,如果我错了。我
Python 查找模块所遵循的搜索过程到底是什么?以什么顺序考虑哪些路径?(例如sys.path
与PYTHONPATH
定义site-packages
等)
我从评论中提供的链接中复制了以下信息,如下,但我有以下问题:
installation-dependent
默认到底是什么?- 如果您有一个来自
virtualenv
或来自conda
激活的虚拟环境,会发生什么?
当导入名为 spam 的模块时,解释器首先搜索具有该名称的内置模块。如果没有找到,它会在变量 sys.path 给出的目录列表中搜索名为 spam.py 的文件。sys.path 从这些位置初始化:
- 包含输入脚本的目录(或当前目录)。
PYTHONPATH
(目录名称列表,与 shell 变量的语法相同PATH
)。- 安装相关的默认值。
初始化后,Python 程序可以修改
sys.path
. 包含正在运行的脚本的目录位于搜索路径的开头,位于标准库路径之前。这意味着将加载该目录中的脚本,而不是库目录中的同名模块。除非打算更换,否则这是一个错误。有关详细信息,请参阅标准模块部分。