美文网首页动态语言Ruby Python
2018-03-07 Python学习(二)依赖管理

2018-03-07 Python学习(二)依赖管理

作者: 佛右扯 | 来源:发表于2018-03-07 16:35 被阅读16次

    记得刚开始学JAVA的时候,对“代码运行的时候到底从哪里去找依赖的jar包”这个问题,搞了好久才搞清楚,所以在学习Python的一开始,我首先要搞清楚的就是这个问题:

    1. Python是如何管理依赖的

    2. 我的代码在运行的时候,在机器上寻找依赖的位置和顺序是什么

    找到一篇不错的文章:不侵权直接贴连接 http://www.cnblogs.com/russellluo/p/3328683.html

    一、Python是如何管理依赖的

    Python是通过包和模块管理依赖的

    包是一个目录

    模块是一个文件

    这里跟JAVA区别还是很大的,因为JAVA里面所有的东西都是类

    二、我的代码在运行的时候,在机器上寻找依赖的位置和顺序是什么

    1)搜索

    搜索 是整个导入过程的核心,也是最为复杂的一步。对于被导入模块M,按照先后顺序,搜索的处理步骤为:

    在缓存 sys.modules 中查找模块M,若找到则直接返回模块M

    否则,顺序搜索 sys.meta_path,逐个借助其中的 finder 来查找模块M,若找到则加载后返回模块M

    否则,如果模块M在一个包P中(如import P.M),则以P.__path__为搜索路径进行查找;如果模块M不在一个包中(如import M),则以 sys.path 为搜索路径进行查找

    。。。。。。

    4、sys.path正如 『导入过程』 中所述,sys.path是 不在包中的模块(如import M)的“搜索路径”。在这种情况下,控制sys.path就能控制模块的导入过程。sys.path 是一个路径名的列表,按照先后顺序,其中的路径主要分为以下四块:程序主目录(默认定义):如果是以脚本方式启动的程序,则为 启动脚本所在目录;如果在交互式命令行中,则为 当前目录。PYTHONPATH目录(可选扩展):以 os.pathsep 分隔的多个目录名,即环境变量os.environ['PYTHONPATH'](类似shell环境变量PATH)标准库目录(默认定义):Python标准库所在目录(与安装目录有关).pth文件目录(可选扩展):以“.pth”为后缀的文件,其中列有一些目录名(每行一个目录名),用法参考 site为了控制sys.path,可以有三种选择:直接修改sys.path列表使用PYTHONPATH扩展使用.pth文件扩展

    这一段描述很清楚,跟JAVA的顺序也不一样,JAVA是从近到远的顺序找~~

    今天先记录到这里吧

    相关文章

      网友评论

        本文标题:2018-03-07 Python学习(二)依赖管理

        本文链接:https://www.haomeiwen.com/subject/sfajfftx.html