Python - 是否有比sys.path更多的搜索路径?

Luc*_*nan 5 python module-search-path sys.path

我认为sys.path是Python模块的所有搜索路径的完整列表.

但是,在我的Ubuntu机器上,'/ usr/local/lib/python2.6/did-package /'几乎是我所有模块的所在,而且该路径不在sys.path中.我仍然可以导入该路径上的任何模块.

编辑,不是:即使我将sys.path设置为空列表,我仍然可以从该路径导入.

这种对dist-packages路径的隐含知识来自何处?在这个隐含的搜索路径组中是否还有其他路径,或者它是什么?

编辑:似乎我的帖子的第二部分不是真的.实际上,"sys.path = []",意味着我无法导入任何内容,甚至不能从我当前的工作目录中导入.我很抱歉.

NPE*_*NPE 4

请注意下面提到依赖于安装的默认值:

\n\n
\n

6.1.2. 模块搜索路径

\n\n

导入名为 的模块时spam,解释器会在包含输入脚本的目录中搜索指定的文件spam.py,然后在环境变量指定的目录列表中 搜索该文件PYTHONPATH。它与 shell 变量 具有相同的语法PATH,即目录名称列表。如果PYTHONPATH未设置,或者在此处找不到文件,则在依赖 于安装的默认路径中继续搜索;在 Unix 上,这通常是\n .:/usr/local/lib/python

\n\n

实际上,模块是在由变量给出的目录列表中搜索的,sys.path该变量是从包含输入脚本(或当前目录)的目录PYTHONPATH依赖于安装的默认值初始化的。这允许 Python 程序知道\n\xe2\x80\x99 在做什么,从而修改或替换模块搜索路径。请注意,由于包含正在运行的脚本的目录位于搜索路径上,因此该脚本不能与标准模块同名,这一点很重要,否则 Python 将尝试将脚本作为模块加载当导入该模块时。这通常是一个错误。\n 有关详细信息,请参阅标准模块部分。

\n
\n\n

编辑在我的 Ubuntu 盒子上,/usr/local/lib/python2.6/dist-packages存在于sys.path. 如果我清除sys.path然后尝试从上述目录导入模块,则不再有效。这表明解释器对该目录没有隐式了解,而是通过 找到它sys.path

\n\n

编辑当您进行实验时,请确保sys.path在 Python 会话开始时进行修改。如果你import X再清楚sys.path,然后再做一次,即使不再上import X,后者也不会失败。Xsys.path

\n