【发布时间】:2014-09-16 17:55:55
【问题描述】:
我想这个问题以前已经回答过了,但是我找不到一个可以准确描述搜索过程的线程。抱歉,如果我错了。我
究竟Python 查找模块所遵循的搜索过程是什么?以什么顺序考虑哪些路径? (例如sys.path vs PYTHONPATH 定义,site-packages 等)
我从the link下面复制了cmets中提供的信息,如下,但我有以下问题:
-
installation-dependent默认值到底是什么? - 如果您激活了来自
virtualenv或conda的虚拟环境会怎样?
当一个名为 spam 的模块被导入时,解释器首先搜索 对于具有该名称的内置模块。如果没有找到,然后搜索 对于一个名为 spam.py 的文件,在由 变量 sys.path。 sys.path 从这些位置初始化:
- 包含输入脚本的目录(或当前目录)。
PYTHONPATH(目录名称列表,语法与 shell 变量PATH相同)。- 依赖于安装的默认值。
初始化后,Python程序可以修改
sys.path。这 包含正在运行的脚本的目录放在开头 搜索路径,在标准库路径之前。这表示 该目录中的脚本将被加载,而不是 库目录中的同名。这是一个错误,除非 更换的目的。有关更多信息,请参阅标准模块部分 信息。
【问题讨论】:
-
来自this question,我发现this link可能对你有帮助。
-
感谢@Celeo 我已经更新了 OP。
-
几年前有一个good video 介绍如何从 pycon 导入。
标签: python path virtualenv conda