python模块搜索路径

模块搜索路径

概括地讲,Python的模块搜索路径是这些主要组件组合而成的结果。其中有些进行了预先定义,而其中有些你可以进行调整来告诉Python去哪里搜索。

1.      程序的主目录

2.      PYTHONPATH目录(如果已经进行了设置)

3.      标准链接库目录

4.      任何.pth文件的内容(如果存在的话)。

最后,这四个组件组合起来就变成了sys.path,它是目录名称字符串的列表。搜索路径的第一和第三元素是自动定义的,但是因为Python会从头到尾搜索这些组件组合的结果,第二和第四元素,就可以用于扩展路径,从而包含你自己的源代码目录。

PYTHONPATH目录

Python会从左至右(假设你设置了的话)搜索PYTHONPATH环境变量设置中罗列出的所有目录。简而言之,PYTHONPATH是设置包含Python程序文件的目录的列表,这些目录可以是用户定义的或平台特定的目录名。你可以把想导入的目录都加进来,而Python会使用你的设置来扩展模块搜索的路径。

         因为Python会先搜索主目录,当导入的文件跨目录时,这个设置才显得格外重要。也就是说,如果你需要被导入的文件与进行导入的文件处在不同目录时。

 

sys.path列表

如果你想看看模块搜索路径在机器上的实际配置,可以通过打印内置的sys.path列表(也就是标准模块sys的path属性)来查看这个路径,就好像Python知道一样。目录名称字符串列表就是Python内部实际的搜索路径。导入时,Python会由左至右搜索这个列表中的每个目录。

其实,sys.path是模块搜索的路径。Python在程序启动时进行配置,自动将顶级文件的主目录(或者指定当前工作目录的一个空字符串)、任何PYTHONPATH目录、已经创建的任何.pth文件路径的内容,以及标准库目录合并。结果是Python在每次导入一个新文件的时候查找目录名的字符串的列表。

import sys
print(sys.path)


模块文件的选择

记住,文件名的后缀(例如,.py)是刻意从import语句中省略的。Python会选择在搜索路径中第一个符合导入文件名的文件。例如,import b形式的import叙述可能会加载

源代码文件b.py

字节码文件b.pyc

目录b,包导入

编译扩展模块(通常用C或C++编写),导入时使用动态连接(例如,Linux的b.so以及Cygwin和Windows的b.dll或b.pyd)。

用C编写的编译好的内置模块,并通过静态连接至Python








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值