Python包管理工具setuptools详解(基础)
2016-01-15 11:00
1026 查看
原文章:点击打开链接
0.什么是setuptools
setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建的包时,并不需要已安装setuptools,只要一个启动模块即可。功能亮点:
利用EasyInstall自动查找、下载、安装、升级依赖包
创建Python Eggs
包含包目录内的数据文件
自动包含包目录内的所有的包,而不用在setup.py中列举
自动包含包内和发布有关的所有相关文件,而不用创建一个MANIFEST.in文件
自动生成经过包装的脚本或Windows执行文件
支持Pyrex,即在可以setup.py中列出.pyx文件,而最终用户无须安装Pyrex
支持上传到PyPI
可以部署开发模式,使项目在sys.path中
用新命令或setup()参数扩展distutils,为多个项目发布/重用扩展
在项目setup()中简单声明entry points,创建可以自动发现扩展的应用和框架
总之,setuptools就是比distutils好用的多,基本满足大型项目的安装和发布
1.安装setuptools
1) 最简单安装,假定在ubuntu下sudo apt-get install python-setuptools
2) 启动脚本安装
wget http://peak.telecommunity.com/dist/ez_setup.py sudo python ez_setup.py
2.创建一个简单的包
有了setuptools后,创建一个包基本上是无脑操作cd /tmp mkdir demo cd demo
在demo中创建一个
setup.py文件,写入
from setuptools import setup, find_packages setup( name = "demo", version = "0.1", packages = find_packages(), )
执行
python setup.py bdist_egg即可打包一个test的包了。
demo |-- build | `-- bdist.linux-x86_64 |-- demo.egg-info | |-- dependency_links.txt | |-- PKG-INFO | |-- SOURCES.txt | `-- top_level.txt |-- dist | `-- demo-0.1-py2.7.egg `-- setup.py
在dist中生成的是egg包
file dist/demo-0.1-py2.7.egg dist/demo-0.1-py2.7.egg: Zip archive data, at least v2.0 to extract
看一下生成的.egg文件,是个zip包,解开看看先
upzip -l dist/demo-0.1-py2.7.egg Archive: dist/demo-0.1-py2.7.egg Length Date Time Name --------- ---------- ----- ---- 1 2013-06-07 22:03 EGG-INFO/dependency_links.txt 1 2013-06-07 22:03 EGG-INFO/zip-safe 120 2013-06-07 22:03 EGG-INFO/SOURCES.txt 1 2013-06-07 22:03 EGG-INFO/top_level.txt 176 2013-06-07 22:03 EGG-INFO/PKG-INFO --------- ------- 299 5 files
我们可以看到,里面是一系列自动生成的文件。现在可以介绍一下刚刚setup()中的参数了
name 包名
version 版本号
packages 所包含的其他包
要想发布到PyPI中,需要增加别的参数,这个可以参考官方文档中的例子了。
3.给包增加内容
上面生成的egg中没有实质的内容,显然谁也用不了,现在我们稍微调色一下,增加一点内容。在demo中执行
mkdir demo,再创建一个目录,在这个demo目录中创建一个
__init__.py的文件,表示这个目录是一个包,然后写入:
#!/usr/bin/env python def test(): print 'Hello World!' if __name__ == '__main__': test()
现在的主目录结构为下:
demo |-- demo | `-- __init__.py `-- setup.py
再次执行
python setup.py bdist_egg后,再看egg包
Archive: dist/demo-0.1-py2.7.egg Length Date Time Name --------- ---------- ----- ---- 1 2013-06-07 22:23 EGG-INFO/dependency_links.txt 1 2013-06-07 22:23 EGG-INFO/zip-safe 137 2013-06-07 22:23 EGG-INFO/SOURCES.txt 5 2013-06-07 22:23 EGG-INFO/top_level.txt 176 2013-06-07 22:23 EGG-INFO/PKG-INFO 95 2013-06-07 22:21 demo/__init__.py 338 2013-06-07 22:23 demo/__init__.pyc --------- ------- 753 7 files
这回包内多了demo目录,显然已经有了我们自己的东西了,安装体验一下。
python setup.py install
这个命令会讲我们创建的egg安装到python的dist-packages目录下,我这里的位置在
tree /usr/local/lib/python2.7/dist-packages/demo-0.1-py2.7.egg
查看一下它的结构:
/usr/local/lib/python2.7/dist-packages/demo-0.1-py2.7.egg |-- demo | |-- __init__.py | `-- __init__.pyc `-- EGG-INFO |-- dependency_links.txt |-- PKG-INFO |-- SOURCES.txt |-- top_level.txt `-- zip-safe
打开python终端或者ipython都行,直接导入我们的包
>>> import demo >>> demo.test() hello world! >>>
好了,执行成功!
相关文章推荐
- python实现ping源代码
- python os.argv[]
- [Leetcode]@python 74. Search a 2D Matrix
- python进阶——进程/线程/协程
- Python 基础 - 统计文本里单词的个数以及出现的次数
- Python IDLE 清屏
- Arcgis+Python实现对栅格归一化处理
- 【python+mysql】mysql语句的执行,结果捕获,及如何在mysql语句中包含变量
- python练习_购物车(2)
- 详解python单例模式与metaclass
- Python 文件写入中文问题
- python复习笔记(一)
- 【python+mysql】数据库的连接与释放
- 老男孩教育Python自动化开发精英班-开班典礼感想
- python学习二(Django实现事务管理)
- 理解python正则表达式
- 批量修改AD用户属性python脚本
- [Python]How to handle the exception in Python?
- python的统一编码规范
- python实现手机号归属地相关信息查询