python软件怎么使用-Python快速入门—如何选择使用包管理工具?
原标题: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快速入门—如何选择使用包管理工具?相关推荐
- 3.2 Go语言从入门到精通:包管理工具之GOPATH
当我们真正用 Go 去做项目,或者阅读 Go 项目(如,Go 实现的开源项目)时,不可避免的会遇到包依赖问题,一些包管理方式总是很难区分.选择.Go的包管理与Java的Maven依赖管理不太一样,起初 ...
- python(十四)--Django学习快速入门
Django学习快速入门 1. 预备知识 1.1 什么是http协议 1.2 MVC模式和MTV模式 1.2.1 MVC 模式 1.2.2 MTV 模式 2. Django框架介绍 2.1 什么是框架 ...
- 零基础编程入门python视频-Python编程零基础小白快速入门完整全系列精品课
1. 课程咨询加老师助理微信:助理1微信: chenjinglei88 ,助理2微信: omf6757 2. 决定购买并想得到陈敬雷老师亲自指导(课程或自己项目难题均可)加老师微信: chenjing ...
- python爬虫实践——零基础快速入门(四)爬取小猪租房信息
上篇文章我们讲到python爬虫实践--零基础快速入门(三)爬取豆瓣电影 接下来我们爬取小猪短租租房信息.进入主页后选择深圳地区的位置.地址如下: http://sz.xiaozhu.com/ 一,标 ...
- python软件怎么运行-python软件怎么用
从官网下载安装好的python软件,即python解释器.启动python解释器的方法如下 启动Python有两种方法.一种方法是从IDLE启动:python学习网,大量的免费python视频教程,欢 ...
- python软件怎么用-python软件怎么用
从官网下载安装好的python软件,即python解释器.启动python解释器的方法如下 启动Python有两种方法.一种方法是从IDLE启动:python学习网,大量的免费python视频教程,欢 ...
- automake linux,Linux下automake软件编译与发布快速入门
Linux下automake软件编译与发布快速入门 2008-04-22 eNet&Ciweek 进入编辑界面,输入内容如下: AUTOMAKE_OPTIONS=foreign bin_PRO ...
- Python包管理工具小结
此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...
- 新一代的 Python 包管理工具 -- PDM
PDM 是一个新的 Python 的包管理器,也许你还未知晓它的存在,但实际上PDM 已经诞生两年,并在 2021 年发布 1.0 版本,目前最高的版本是 1.12.8. 在刚听到 PDM 时,我下意 ...
最新文章
- 我竟然用OpenCV实现了卡尔曼滤波
- GDI 泄漏检测方法
- 使用scanf()函数接收带空格的字符串
- 华为手机连接电脑显示无法连接服务器,无法连接到服务器电脑
- dnspod-sr的安装和使用
- Laravel 的 Eloquent ORM学习
- matlab中solve和resolve,resolve和solve的区别
- mysql proxy 悲观锁_mysql悲观锁总结和实践
- windows+caffe下对CIFAR训练
- C# WebApi Xml序列化问题解决方法:“ObjectContent`1”类型未能序列化内容类型“application/xml;charset=utf-8“的响应正文。...
- 【ML小结5】决策树(ID3、C4.5、CART)
- linux五种子系统,Ubuntu 下五个最好的 BT 客户端
- python qt5开发实例_python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
- verilog REG 寄存器、向量、整数、实数、时间寄存器
- 创业管理:创业者的十八般武艺——1.2 创业者素质体系(1)
- 基于STM32f407的TSL2561模块的使用
- 直播视频流+html,前端页面播放 rtmp 流与 flv 格式视频文件
- 【R语言实例】igraph — 网络分析与可视化包(1)
- 做Java开发如何月薪达到两万,需要什么技术水平
- PTA 1032 挖掘机技术哪家强(c语言)