博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之包管理工具
阅读量:5882 次
发布时间:2019-06-19

本文共 3340 字,大约阅读时间需要 11 分钟。

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

distuils

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

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

[root@node175 webdemo]# ls -a -l总用量 20drwxr-xr-x   5 root root  126 1月   5 17:25 .drwxr-xr-x. 45 root root 4096 1月   5 14:50 ..drwxr-xr-x   8 root root 4096 1月   5 14:53 .git-rw-r--r--   1 root root    0 1月   5 14:45 LICENSE-rw-r--r--   1 root root    0 1月   5 14:45 README.md-rw-r--r--   1 root root  226 1月   5 14:48 requirement.txt-rw-r--r--   1 root root  607 1月   5 14:50 setup.cfg-rw-r--r--   1 root root  355 1月   5 14:47 setup.pydrwxr-xr-x   2 root root   24 1月   5 14:46 webdemo

这个是一个最简单的Python项目目录:

源代码放在子目录Webdemo/下,然后包含了软件包管理的所需的文件:

  • setup.py
  • setup.cfg
  • requirements.txt
  • LICENSE
  • README

set.py

#encoding=utf-8import setuptools# In Python < 2.7.4, a lazy loading of package `pbr` will break# setuptools if some other modules registered functions in `atexit`.# solution from: http://bugs.Python.org/issue15881#msg170215try:    import multiprocessing  # noqaexcept ImportError:    passsetuptools.setup(    setup_requires=['pbr'], pbr=True)

setup.cfg

[metadata]name = webdemoversion = 0.0.1summary = Web Application Demodescription-file = README.mdauthor = authorauthor-email = author@example.comclassifier =    Environment :: Web Environment    Intended Audience :: Developers    Intended Audience :: Education    License :: OSI Approved :: GNU General Public License v2 (GPLv2)    Operating System :: POSIX :: Linux    Programming Language :: Python    Programming Language :: Python :: 2    Programming Language :: Python :: 2.7[global]setup-hooks =    pbr.hooks.setup_hook[files]packages = webdemo[entry_points]console_scripts =

只包含最基本的信息,接下来是requirements.txt文件:

# The order of packages is significant, because pip processes them in the order# of appearance. Changing the order has an impact on the overall integration# process, which may cause wedges in the gate later.pbr<2.0,>=0.11

配合git:

git initgit add .git commit -m "init project"git tag -a 0.0.1 -m "version 0.01"

然后就可以使用Python setup.py sdist命令来生成一个0.0.1版本的源码归档了:

python setup.py sdist

查看文件:

[root@node175 webdemo]# tree .├── AUTHORS├── ChangeLog├── dist│   └── webdemo-0.0.1.tar.gz   #生成的压缩包├── LICENSE├── README.md├── requirement.txt├── setup.cfg├── setup.py├── webdemo│   └── __init__.py└── webdemo.egg-info    ├── dependency_links.txt    ├── entry_points.txt    ├── not-zip-safe    ├── pbr.json    ├── PKG-INFO    ├── SOURCES.txt    └── top_level.txt3 directories, 16 files

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

setuptools 与 distribute

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

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

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

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

  • 从PyPI上安装一个包:当使用 easy_install package 命令后,easy_install 可以自动从 PyPI 上下载相关的包,并完成安装,升级
  • 下载一个包安装:通过 easy_install package.tgz 命令可以安装一个已经下载的包
  • 安装egg文件:通过 easy_install package.egg 可以安装一个egg格式的文件

setuptools/distribute和easy_install之间的关系:

  • setuptools/distribute 都扩展了 distutils,提供了更多的功能
  • easy_install是基于setuptools/distribute的一个工具,方便了包的安装和省级

pip

pip install pkg

转载地址:http://ocpix.baihongyu.com/

你可能感兴趣的文章
Windows phone8 基础篇(三) 常用控件开发
查看>>
Oracle学习笔记之五,Oracle 11g的PL/SQL入门
查看>>
大叔手记(3):Windows Silverlight/Phone7/Mango开发学习系列教程
查看>>
考拉消息中心消息盒子处理重构(策略模式)
查看>>
so easy 前端实现多语言
查看>>
【追光者系列】HikariCP源码分析之ConcurrentBag&J.U.C SynchronousQueue、CopyOnWriteArrayList...
查看>>
在navicat中如何新建连接数据库
查看>>
canvas系列教程05-柱状图项目3
查看>>
css绘制几何图形
查看>>
HTML标签
查看>>
理解JS中的Event Loop机制
查看>>
转载:字符编码笔记:ASCII,Unicode和UTF 8
查看>>
修复看不懂的 Console Log
查看>>
Android跨进程通信 AIDL使用
查看>>
ajax常见面试题
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
vue进行wepack打包执行npm run build出现错误
查看>>
【d3.js v4基础】过渡transition
查看>>
VUEJS开发规范
查看>>
Android系统的创世之初以及Activity的生命周期
查看>>