opesntack基础知识-软件包历史脉络
软件包管理
软件包管理是每个OpenStack项目的基础,其目的是用来将项目代码打包成源码包或者二进制包进行分发。一个项目的代码可能会被打包放到PyPI上,这样你可以通过pip命令安装这个包;也可能会被打包放到项目的软件仓库里,这样你可以通过apt-get install或者yum install来安装这个软件包。
不幸的是,Python在软件包管理十分混乱,至少历史上十分混乱。原因有两个:一是标准库提供的软件包管理功能十分弱,二是官方没有提供统一的软件包管理标准。对于这个领域,我曾经也是混乱的,只知道使用easy_install和pip来安装软件包。不过自从看了The Hacker's Guide to Python(《Python高手之路》)之后,算是知道点来龙去脉。
软件打包工具的历史
Python软件打包工具的历史顺序
distutils (before 2000)
disutils自从1998年起就是Python标准库的一部分了,不过它在2000年就停止了开发。disutils是最早的Python打包工具和标准,也奠定了对Python软件进行打包的一个基本工作方式:使用setup.py文件。来看一个setup.py文件的例子:
from disutils.core import setup
setup(name='webdemo',
description='A simple web demo.',
author='author name',
author_email='author_name@example.com'
url='http://example.com',
packages=['webdemo'])
setup.py文件是放在项目根目录下的:
~/programming/python/webdemo git:(master) ✗ $ ls
LICENSE README.md setup.py webdemo
然后你就可以使用命令python setup.py build来编译包,可以使用python setup.py install来安装这个项目。如果需要帮助,可以通过python setup.py --help-commands来查看支持的命令。
setuptools
disutils停止开发后,setuptools成了继任者。setuptools提供了很多高级功能,包括自动依赖处理、Egg分发格式以及easy_install命令。setuptools的使用方式和disutils差不多,也是以一个setup函数作为入口,只不过该函数来自于setuptools模块,而且支持更多的参数,比如classifiers, setup_requires等,参数更多意味着功能更多。
后来有一段时间setuptools项目发展开始变得缓慢了,就有人从setuptools项目创建了distribute项目。distribute开始支持Python 3等新特性。不过一段时间后,distribute项目又和setuptools项目合并了(2013年3月)。因此,现在已经不存在distribute项目了。到目前为止,setuptools还是使用最多的打包工具,而且开发很活跃。setuptools项目的文档在:http://pythonhosted.org/setuptools/。OpenStack目前也是使用setuptools库来执行打包操作
disutils2
在setuptools项目发展的过程中,有一个叫disutils2的项目也在并行开发中,其目的是全面取代Python标准库中的distutils。disutils2的最大改进是将setup函数的参数单独放到一个setup.cfg的文件中(这些成为包的元数据)。不够disutils2这个项目缺点很多,而且没有功能上还不如setuptools项目,所以在2012年的时候,这个项目被废弃了。
distlib
这个是一个新的打包工具,目标也是取代disutils。不过这个项目的开发进展也不快,到2015年才发布了0.2.0版本。目前还未能并入到Python的标准库中。不过可以保持关注。项目文档地址:https://readthedocs.org/projects/distlib/
opesntack基础知识-软件包历史脉络的更多相关文章
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- Linux基础知识梳理
Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和自由传播的类Unix操作系统,是 ...
- linux基础知识的总结
例如以下内容是我对linux基础知识的总结,由于本人在初期学习linux的时候走了不少的弯路,对于基础的掌握耗费了不少的时间,所以为了后来者对linux的基础部分有个清晰的了解,特对基础知识进行了总结 ...
- 大数据学习笔记——Java篇之基础知识
Java / 计算机基础知识整理 在进行知识梳理同时也是个人的第一篇技术博客之前,首先祝贺一下,经历了一年左右的学习,从完完全全的计算机小白,现在终于可以做一些产出了!可以说也是颇为感慨,个人认为,学 ...
- [转帖]linux基础知识大纲
linux基础知识大纲 https://blog.csdn.net/CSDN___LYY/article/details/80810403 1.Linux操作系统概述Linux操作系统的发展过程.创始 ...
- 《Linux基础知识及命令》系列分享专栏
<Linux基础知识及命令>系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂.本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级 ...
- 2.Docker容器学习之新生入门必备基础知识
0x02 Docker 核心概念 描述:Docker的三大核心概念镜像/容器和仓库, 通过三大对象核心概念所构建的高效工作流程; 1.镜像 [image] 描述:images 类似于虚拟机镜像,借鉴了 ...
- 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))
关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
随机推荐
- Oracle的控制文件和日志文件
--什么是控制文件 控制文件是数据库的一个二进制文件,它主要记录数据库的名称. 数据库的数据文件存放位置等信息. 一个控制文件只能属于一个数据库.如果控制文件丢失,这数据库就无法操作. --下面查询语 ...
- Neutron Messaging Callback System
callback system 用在进程内部通信,Messaging Callback System是给进程间通信.为了agent不通过RPC就能得到resource的变化. 目前用在: QoS po ...
- ubantu卸载软件
参考:https://blog.csdn.net/luckydog612/article/details/80877179 https://blog.csdn.net/get_set/article/ ...
- form表单验证失败,阻止表单提交
form表单验证失败,阻止表单提交 效果演示: 贴上完整代码: <!DOCTYPE html> <html lang="en"> <head> ...
- NodeJs实现图片上传
关于formidable NodeJs实现图片上传,此处主要用了插件:formidable github上关于formidable的资料如下: https://github.com/felixge/n ...
- string(未完待续)
1.string字符串的长度 可以用 a.length() 来测,或者是a.size() 来测 不可以用strlen(a)来求其长度, sizeof(a)是固定值16, 求的是strin ...
- Hibernate学习---第十三节:hibernate过滤器和拦截器的实现
一.hibernate 过滤器 1.在持久化映射文件中配置过滤器,代码如下: <?xml version="1.0"?> <!DOCTYPE hibernate- ...
- Twitter的流处理器系统Heron——升级的storm,可以利用mesos来进行资源调度
2011年,Twitter发布了开源的分布式流计算系统Storm.四年后,随着用户数量的急剧增加,Twitter每天要处理的事件已经增加到十亿以上.Storm系统应对如此庞大而复杂多样的流数据变得十分 ...
- Android DOM解析XML方法及优化
在Android应用开发中,我们常常要在应用启动后从服务器下载一些配置文件,这些配置文件包含一些项目中可能用到的资源,这些文件很多情况下是XML文件,这时就要将XML下载到文件中保存,之后再解析XML ...
- 【IPC通信】key_t键和ftok函数
System V IPC分为三种: System V消息队列 System V信号量 System V共享内存区 这三种类型的IPC使用key_t值做为它们的名字. key_t这个数据类型在<s ...