原标题:Python快速入门—如何选择使用包管理工具?

源 | cnblogs文 | 包子

在Python环境中已经有很多成熟的包,可以通过安装这些包来扩展我们的程序。

例如,很多时候Python开发人员都会去PyPI网站去查找自己想要使用的包,然后进行安装。PyPI ( Python Package Index)是获得第三方 Python 软件包以补充标准库的一个站点。

在安装Python包的过程中,经常涉及到distutils、setuptools、distribute、setup.py、easy_install、easy_install和pip等等。

突然对Python的包管理凌乱了,这些工具关系是什么,应该怎么去选择使用?

下面就简单介绍下Python包管理相关的一些内容。

Python包管理工具

这么多的Python包管理工具,刚开始接触Python时会有点不知如何选择。其实,当查过Python的官方文档之后,慢慢就理清了这些工具之间的关系了,也就没有这么混乱了。

下面就分别对Python中的包管理工具进行简单的介绍。

distutils

distutils 是 python 标准库的一部分,这个库的目的是为开发者提供一种方便的打包方式, 同时为使用者提供方便的安装方式。

我们经常使用的setup.py就是基于distutils实现的,然后通过setup.py就可以进行打包或者安装了。

看一个简单的例子,找一个目录创建三个文件foo.py、bar.py和setup.py,其中setup.py的内容如下:

fromdistutils.core importsetup

setup(

name='fooBar',

version='1.0',

author='Will',

author_email='wilber@sh.com',

url='http://www.cnblogs.com/wilber2013/',

py_modules=['foo', 'bar'],

)

然后,在该目录中运行 python setup.py sdist ,会得到以下输出,同时生成了一个"fooBar-1.0.zip"包。

使用者就可以解压缩这个包然后执行 python setup.py install进行安装,然后就可以使用foo、bar这两个模块了:

关于更过如何编写setup.py的内容,请自行参阅Python官方文档中的setup部分。

setuptools 和 distribute

setuptools 是对 distutils 的增强,尤其是引入了包依赖管理。我们可以通过ez_setup.py来安装setuptools。

至于distribute,它是setuptools的一个分支版本。分支的原因是有一部分开发者认为 setuptools 开发太慢。但现在,distribute 又合并回了 setuptools 中,所以可以认为它们是同一个东西。

前面看到setup.py可以创建一个压缩包,而setuptools使用了一种新的文件格式(.egg),可以为Python包创建 egg文件。setuptools 可以识别.egg文件,并解析、安装它

easy_install

当安装好setuptools/distribute之后,我们就可以直接使用easy_install这个工具了:

1.从PyPI上安装一个包:当使用 easy_install package 命令后,easy_install 可以自动从 PyPI 上下载相关的包,并完成安装,升级

2.下载一个包安装:通过 easy_install package.tgz 命令可以安装一个已经下载的包

3.安装egg文件:通过 easy_install package.egg 可以安装一个egg格式的文件

通过 easy_install --help 命令可以获取该命令相关的帮助提示:

根据上面的分析,可以看到setuptools/distribute和easy_install之间的关系:

*setuptools/distribute 都扩展了 distutils,提供了更多的功能

*easy_install是基于setuptools/distribute的一个工具,方便了包的安装和省级

pip

pip是目前最流行的Python包管理工具,它被当作easy_install的替代品,但是仍有大量的功能建立在setuptools之上。

easy_install 有很多不足:安装事务是非原子操作,只支持 svn,没有提供卸载命令, 安装一系列包时需要写脚本。pip 解决了以上问题,已经成为新的事实标准。

pip的使用非常简单,并支持从任意能够通过 VCS 或浏览器访问到的地址安装 Python 包:

*安装: pip install SomePackage

*卸载: pip uninstall SomePackage

使用pip

在大家使用Python中,推荐使用pip进行Python包管理,pip的安装和使用都比较方便。

pip安装

pip的安装有两种常用的方式:

1.下载get-pip.py文件,然后执行 python get-pip.py 进行安装(如果没有安装setuptools,那么get-pip.py会帮忙安装)

2.现在pip源码包,然后通过setup.py进行安装

pip常用命令

对于pip,最常用的肯定还是 pip --help ,通过帮助文档,就可以大概知道如何使用命令和参数。

总结

本文介绍了Python的各个包管理工具之间的关系,相信通过这篇文章的介绍,就不会再对distutils、setuptools、distribute、setup.py、easy_install、easy_install和pip等等名词感觉混乱了。

大致了解这些Python包管理工具后,大家应该也清楚了怎么选择和使用。

本文没有涉及如何制作并发布一个Python包,感兴趣的同学可以去Python官网上查查。

原文链接:https://www.cnblogs.com/liangqihui/p/6895108.html

-END-

转载声明:本文选自「cnblogs」,搜索原文链接即可关注。

长假无聊

不如来学Python

每天30分钟

30天学会Python编程

世界正在奖励坚持学习的人!返回搜狐,查看更多

责任编辑:

python软件怎么使用-Python快速入门—如何选择使用包管理工具?相关推荐

  1. 3.2 Go语言从入门到精通:包管理工具之GOPATH

    当我们真正用 Go 去做项目,或者阅读 Go 项目(如,Go 实现的开源项目)时,不可避免的会遇到包依赖问题,一些包管理方式总是很难区分.选择.Go的包管理与Java的Maven依赖管理不太一样,起初 ...

  2. python(十四)--Django学习快速入门

    Django学习快速入门 1. 预备知识 1.1 什么是http协议 1.2 MVC模式和MTV模式 1.2.1 MVC 模式 1.2.2 MTV 模式 2. Django框架介绍 2.1 什么是框架 ...

  3. 零基础编程入门python视频-Python编程零基础小白快速入门完整全系列精品课

    1. 课程咨询加老师助理微信:助理1微信: chenjinglei88 ,助理2微信: omf6757 2. 决定购买并想得到陈敬雷老师亲自指导(课程或自己项目难题均可)加老师微信: chenjing ...

  4. python爬虫实践——零基础快速入门(四)爬取小猪租房信息

    上篇文章我们讲到python爬虫实践--零基础快速入门(三)爬取豆瓣电影 接下来我们爬取小猪短租租房信息.进入主页后选择深圳地区的位置.地址如下: http://sz.xiaozhu.com/ 一,标 ...

  5. python软件怎么运行-python软件怎么用

    从官网下载安装好的python软件,即python解释器.启动python解释器的方法如下 启动Python有两种方法.一种方法是从IDLE启动:python学习网,大量的免费python视频教程,欢 ...

  6. python软件怎么用-python软件怎么用

    从官网下载安装好的python软件,即python解释器.启动python解释器的方法如下 启动Python有两种方法.一种方法是从IDLE启动:python学习网,大量的免费python视频教程,欢 ...

  7. automake linux,Linux下automake软件编译与发布快速入门

    Linux下automake软件编译与发布快速入门 2008-04-22 eNet&Ciweek 进入编辑界面,输入内容如下: AUTOMAKE_OPTIONS=foreign bin_PRO ...

  8. Python包管理工具小结

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...

  9. 新一代的 Python 包管理工具 -- PDM

    PDM 是一个新的 Python 的包管理器,也许你还未知晓它的存在,但实际上PDM 已经诞生两年,并在 2021 年发布 1.0 版本,目前最高的版本是 1.12.8. 在刚听到 PDM 时,我下意 ...

最新文章

  1. 我竟然用OpenCV实现了卡尔曼滤波
  2. GDI 泄漏检测方法
  3. 使用scanf()函数接收带空格的字符串
  4. 华为手机连接电脑显示无法连接服务器,无法连接到服务器电脑
  5. dnspod-sr的安装和使用
  6. Laravel 的 Eloquent ORM学习
  7. matlab中solve和resolve,resolve和solve的区别
  8. mysql proxy 悲观锁_mysql悲观锁总结和实践
  9. windows+caffe下对CIFAR训练
  10. C# WebApi Xml序列化问题解决方法:“ObjectContent`1”类型未能序列化内容类型“application/xml;charset=utf-8“的响应正文。...
  11. 【ML小结5】决策树(ID3、C4.5、CART)
  12. linux五种子系统,Ubuntu 下五个最好的 BT 客户端
  13. python qt5开发实例_python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
  14. verilog REG 寄存器、向量、整数、实数、时间寄存器
  15. 创业管理:创业者的十八般武艺——1.2 创业者素质体系(1)
  16. 基于STM32f407的TSL2561模块的使用
  17. 直播视频流+html,前端页面播放 rtmp 流与 flv 格式视频文件
  18. 【R语言实例】igraph — 网络分析与可视化包(1)
  19. 做Java开发如何月薪达到两万,需要什么技术水平
  20. PTA 1032 挖掘机技术哪家强(c语言)

热门文章

  1. 反弹木马——本质上就是一个开80端口的CS程序,伪造自己在浏览网页
  2. golang copy函数
  3. Druid(准)实时分析统计数据库——列存储+高效压缩
  4. 4)PHP命名规则,传值方式
  5. jsp页面展示更加商品的分类,控制商品的显示
  6. apache-2.4.12之虚拟主机配置问题与觖决办法
  7. 什么是CommonJS?
  8. Keystone v3 domains 应用场景
  9. ItemAdding事件接收器中无法取到【创建者】的字段的值
  10. Servlet—07—Cookie; Seesion;