首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索路径比sys.path多吗?

搜索路径比sys.path多吗?
EN

Stack Overflow用户
提问于 2011-07-14 17:35:53
回答 2查看 2.9K关注 0票数 5

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

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

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

这些关于dist-packages路径的隐式知识从何而来?在这个隐式搜索路径组中,还有其他路径吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-14 17:37:56

注意,在下面是中提到了与安装相关的默认设置。

6.1.2.模块搜索路径 导入名为spam的模块时,解释器将在包含输入脚本的目录中搜索名为spam.py的文件,然后在环境变量PYTHONPATH指定的目录列表中搜索。这与shell变量PATH具有相同的语法,即目录名称的列表。如果没有设置PYTHONPATH,或者在那里找不到文件,搜索将在依赖于安装的默认路径中继续进行;在Unix上,这通常是.:/usr/local/lib/python。 实际上,模块是在变量sys.path给出的目录列表中搜索的,该变量从包含输入脚本(或当前目录)、PYTHONPATH(安装相关的默认)的目录中初始化。这允许Python程序知道他们正在做什么来修改或替换模块搜索路径。请注意,因为包含正在运行的脚本的目录位于搜索路径上,所以脚本不具有与标准模块相同的名称很重要,否则Python将在导入该模块时尝试将脚本作为模块加载。这通常是一个错误。有关更多信息,请参见标准模块一节。

在我的Ubuntu框中编辑/usr/local/lib/python2.6/dist-packages出现在sys.path中。如果我清除sys.path,然后尝试从上面的目录导入一个模块,那就不再起作用了。这表明解释器不知道该目录,并通过sys.path找到它。

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

票数 4
EN

Stack Overflow用户

发布于 2011-07-14 17:38:09

模块搜索路径

实际上,模块是在变量sys.path给出的目录列表中搜索的,该目录是从包含输入脚本(或当前目录)、PYTHONPATH和依赖安装的默认设置的目录初始化的。

您正在运行与安装相关的默认设置。

有关安装相关搜索路径的更多信息

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6697525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档