zoukankan      html  css  js  c++  java
  • python包管理工具他们之间的关系

    python包管理工具之间的关系

    现在的python包管理工具有很多,非常混乱,必须理清他们之间的关系才能更好的使用python构建强大的包关系系统工具。

    首先:python官方推荐的第三方库是PyPI:

    PyPI(Python Package Index)python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPIPyPI推荐使用pip包管理器来下载第三方库。

    而这些包管理工具正是为了管理,安装和发布这些常用的包而开发的,这些包管理工具的作用就是安装,管理和发布python包,以及python的一些项目。

    首先:

    1. distutilsdistutilspython自带的基本安装工具,应该说是第一代,应该比较早了,现在可能已经不用了,因为再linux下测试的时候,使用python setup.py install并不管用。他适用于非常简单的场景,主要功能是:

    为项目创建setup.py脚本 也就是说,你开发了一个项目或者包,那你得安装或者发布吧,就可以执行这个脚本安装和运行.

    这样执行python setup.py install即可安装。

    1. setuptools: 针对distutils做了大量的扩展,尤其是加入了包依赖机制,这是因为之前那个distutils发布包的时候,只能发布自己独立编写的包,或者自己全部代码编写的项目文件,但是,在很多大的项目中,我们会经常使用一些其他的第三方包的功能,这时候我们再打包我们开发的这个项目文件,就必须使用setuptools了,这样就没必要再把一整套代码拷贝过来写上了,直接引用,等别人使用我们的项目或包文件的时候,直接一起下载一起引用使用即可。可以这么说,setuptools,因为这一点功能,非常有用,已经事实上成了很多的包开发管理发布的标准,只要我们想安装别人开发的大项目,就可能必须安装使用setuptools,比如django等,在我们开发或者是发布我们自己的包和项目的时候,也可以使用setuptools,当然也可以使用其他的,而不使用setuptools

    经过上面的两个对比,我们发现其实distutils基本上就没什么用,可以不用,我们直接使用setuptools即可,这也是distutils使用比较少,而setuptools使用比较多的根本原因。

    1. distributedistribute在英文中的意思是发布的意思,这个也是一个python发布和管理,及安装使用python包的管理工具,他的出现是因为setuptools开发进度缓慢,不支持python3,而且可能是因为一开始大家刚开始开发的setuptools,项目经验不足,导致setuptools代码比较混乱,这个时候,一些其他的工程师就想再开发一套包管理工具,对setuptools重构一下,完善一下代码,添加一些新功能,并且好好的组织一下代码,并希望将来能取代setuptools并被接纳成为官方标准的库,可能他们很努力,很快就让社区接受了distribute这个包管理工具。

    但是distribute最终未能纳入python官方标准库, Guido 也就python语言的开发发明者并未接纳 distribute 为官方标准,并说明了原因,可能是会跟原来的distutils有冲突,或者distutils必须存在,而且如果更改的话会导致python编辑器代码比较混乱或者代码量很大的原因吧,最终distribute没有被接纳入python的标准库。、

    1. 使用setuptools或者distribute安装python包。

    因为我们的setuptooldistribute软件包管理工具都是基于distutils包管理工具来开发的,所以说只要是我们下载了一个包,只要他是distutils,或者是setuptools,或者是distribute构建开发发布的,那么他很肯定会带有一个setup.py脚本文件,我们就可以直接使用

    python setup.py install命令安装我们下载的python项目或包。

    5.easy_install安装命令:

    因为我们的包都是安装放在官方的PyPI仓库中的,所以,setuptoolsdistribute直接开发了一个自动搜索并安装包的工具easy_install,这个是setuptoolsdistribute自带的安装脚本,也就是说一旦setuptoolsdistribute安装完毕,easy_install即可使用,最大的特点是自动在python官方维护的包源PyPI搜索想安装的软件包及他所依赖的软件包,类似于yum,使用easy_install安装第三方python包非常方便,使用命令如下:

    easy_install 包名  

    setuptools / distribute 都只是扩展了 distutils,这个命令将自动从 PyPI 查找/下载/安装指定的包。

    6.pip包安装命令

    pip包安装命令的出现非常明确,就是为了取代easy_install安装命令,easy_install安装命令有很多不足,安装事物是非原子性操作,也就是安装包的时候只能一下安装所有的包及其依赖,想单独安装其中的某一个包则不行,而且他只支持svn,并且没有卸载包的命令,用起来非常麻烦,安装一系列的相关依赖包或者是安装一个单独的包还可以,但是如果想安装一些列不相关的没什么依赖的包就非常麻烦,而且需要写脚本。pip正好解决了上面的问题,事实上已经成为了一个安装包命令的一个标准。又因为,linux系统python版本混乱,pip正好和virtualenv一起很好的解决这个问题,也就是说virtualenvpip是一个在linux系统上使用python及配置python环境及管理python安装包的好搭档。

    pip基本命令:

    安装包:pip install 包名

    卸载包:pip uninstall 包名

    而且pip支持能够从通过任意包管理系统,如git,PyPI,svn或者其他一些包或版本管理工具系统,或者其他任意浏览器访问到的地址安装python包。

    1. distutils:本来一开始setuptoolsdistribute的诞生是因为distutils的功能不完善,进而开发出的想替代distutils的包管理工具,但是因为后来因为各种原因,未被python官方库接纳,也是因为官方想结束这些混乱,于是这些开发者和官方正打算一起开发一套结束这种混乱的包管理工具局面,于是一起开发除了distutils第二代包管理系统distutils2,他将成为python3.3的标准库,并在以后的其他python3版本中正式使用,可以说他必定结合了setuptoolsdistribute以及第一代distutils的各种功能,并配合和pip包管理命令一同所谓python包管理的基本工具。

    注意:我们在使用pip命令的时候,也必须安装好setuptools或者是distribute,而distribute也是后来在setuptools的基础上开发的,属于setuptools的一个分支,故我们现在装的setuptools实际上也就是distribute

    上面我们已经基本理清了python各种包管理工具之间的关系,接下来我们将要安装并使用一下这些包管理工具。

    补充:参考:https://blog.zengrong.net/post/2169.html

  • 相关阅读:
    mybatis源码追踪2——将结果集映射为map
    Mybatis的cache
    mybatis拦截器
    mybatis中单个参数的引用
    mybatis源码追踪1——Mapper方法用法解析
    win8 下 intellij idea 13 中文输入覆盖的问题
    firebug中html显示为灰色的原因总结
    extjs4.0以上添加多行工具栏的方法
    去除eclipse的validating
    An interview question from MicroStrategy
  • 原文地址:https://www.cnblogs.com/fengjunhua/p/8073348.html
Copyright © 2011-2022 走看看