1.什么是setuptools

setuptoolssetuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。Python还可以帮助我们管理第三方依赖包。

2.安装setuptools

我们使用ez_setup.py来安装,这是 setuptools 自豪的一种安装方式,会自动下载匹配当前Python版本的安装包来安装。

ez_setup.py文件:http://download.csdn.net/detail/chenjintaoxp/6399857

Window中cmd下执行 python ez_setup.py

3利用setuptools制作egg

1〉在C:\Demo\下创建setup.py . (Demo相当于工程)

#from distutils.core import setup
from setuptools import setup, find_packages
setup(
name = 'foo',#包名
version = '0.0.1',#版本号
packages = find_packages()#搜索Demo下的包
)

2〉C:\Demo\创建包foo,C:\Demo\foo\__init__.py

#!/usr/bin/python
def say():
print 'hello' if __name__ == '__main__':
say()

3〉cmd进入C:\Demo,执行python setup.py bdist_egg,会在C:\demo\dist下找到生成的egg文件:foo-0.0.1-py2.7.egg (Python2.7环境)

C:\Demo 的目录

2013/10/15  00:10    <DIR>          .
2013/10/15 00:10 <DIR> ..
2013/10/15 00:11 <DIR> foo
2013/10/15 00:10 173 setup.py
1 个文件 173 字节
3 个目录 15,546,511,360 可用字节 C:\Demo>python setup.py bdist_egg
running bdist_egg
running egg_info
creating foo.egg-info
writing foo.egg-info\PKG-INFO
writing top-level names to foo.egg-info\top_level.txt
writing dependency_links to foo.egg-info\dependency_links.txt
writing manifest file 'foo.egg-info\SOURCES.txt'
reading manifest file 'foo.egg-info\SOURCES.txt'
writing manifest file 'foo.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\foo
copying foo\__init__.py -> build\lib\foo
creating build\bdist.win32
creating build\bdist.win32\egg
creating build\bdist.win32\egg\foo
copying build\lib\foo\__init__.py -> build\bdist.win32\egg\foo
byte-compiling build\bdist.win32\egg\foo\__init__.py to __init__.pyc
creating build\bdist.win32\egg\EGG-INFO
copying foo.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO
copying foo.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO
copying foo.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO
copying foo.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist\foo-0.0.1-py2.7.egg' and adding 'build\bdist.win32\egg' to it
removing 'build\bdist.win32\egg' (and everything under it) C:\Demo>

4〉利用easy_install来安装生成的
foo-0.0.1-py2.7.egg包

 C:\Demo\dist 的目录

2013/10/15  00:13    <DIR>          .
2013/10/15 00:13 <DIR> ..
2013/10/15 00:13 1,334 foo-0.0.1-py2.7.egg
1 个文件 1,334 字节
2 个目录 15,546,499,072 可用字节 C:\Demo\dist>easy_install foo-0.0.1-py2.7.egg
Processing foo-0.0.1-py2.7.egg
Copying foo-0.0.1-py2.7.egg to c:\python27\lib\site-packages
Adding foo 0.0.1 to easy-install.pth file Installed c:\python27\lib\site-packages\foo-0.0.1-py2.7.egg
Processing dependencies for foo==0.0.1
Finished processing dependencies for foo==0.0.1 C:\Demo\dist>

从安装的过程来看,egg包是安装在

c:\python27\lib\site-packages\

5〉测试结果如下

In [1]: import foo

In [2]: foo.say()
hello In [3]:

说明foo包已经安装成功。

foo包的Demo工程地址:http://download.csdn.net/detail/chenjintaoxp/6400019

4.使用setuptools的easy_install(管理第三方包)

安装一个包:
#通过包名安装一个普通的包(从PyPI搜索自动安装)
ex:easy_install SQLObject
#在指定的下载URL中,通过包名安装和更新包
ex:easy_install -f http://pythonpaste.org/package_index.html SQLObject
#通过source发布的URL,下载,编译,安装包
ex:easy_install http://example.com/path/to/MyPackage-1.2.3.tgz
#通过egg文件去安装包(如:foo包的安装)
ex:easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg
#更新已经安装的包到最近版本
ex:easy_install --upgrade PyProtocols 更新一个包:
#将目前包更新到2.0版本
ex:easy_install "SomePackage==2.0"
#将目前包更新到>2.0的一个版本
ex:easy_install "SomePackage>2.0"
#更新到包的最新版本
ex:easy_install --upgrade SomePackage
#通过URL来更新
ex:easy_install -f http://example.com/downloads ExamplePackage
ex:easy_install http://example.com/downloads/ExamplePackage-2.0-py2.4.egg
ex:easy_install my_downloads/ExamplePackage-2.0.tgz 卸载一个包:
#通过包名卸载包
ex:easy_install -mxN PackageName

详细easy_install使用参照:http://peak.telecommunity.com/DevCenter/EasyInstall

setuptools的使用的更多相关文章

  1. 【原】关于Python中setuptools安装的问题

    在生成package的时候,需要在setup.py中引入setuptools包,可是却报告如下错误: ImportError: No module named setuptools 解决办法就是下载s ...

  2. Linux从零单排(二):setuptools、pip、anaconda2的环境配置

    为了更方便的使用Python的类库,需要进行相应的配置 (一)setuptools的配置 1.setuptools的下载 命令行输入wget https://pypi.python.org/packa ...

  3. Python中setuptools做什么用的?

    概括 setuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,它 是一组Python的 distutilsde工具的增强工具(适用于 Pyt ...

  4. python3.5学习笔记:linux6.4 安装python3 pip setuptools

    前言: python3应该是python的趋势所在,当然目前争议也比较大,这篇随笔的主要目的是记录在linux6.4下搭建python3环境的过程 以及碰到的问题和解决过程. 另外,如果本机安装了py ...

  5. python setuptools工具打包

    http://blog.csdn.net/five3/article/details/7847551http://blog.csdn.net/reyoung1110/article/details/7 ...

  6. Python3 windows如何安装模块 setuptools

    下载的module解压后里面有setup.py文件,如果打开setup.py文件里面有这段代码: from setuptools import setup ... setup( ... 这种的都需要调 ...

  7. ez_setup.py(安装python下setuptools用)

    #!python"""Bootstrap setuptools installation If you want to use setuptools in your pa ...

  8. python安装setuptools

    http://wenku.baidu.com/link?url=I-FCVFpHbP2oyCt1Gjb1X5xHk4P475dVU3j8rWd4b4VSuD-Wd86LdbC7bdYskZdtDfGK ...

  9. python打怪之路【第二篇】:ImportError: No module named setuptools

    在python安装第三方模块时出现如下错误: python错误:ImportError: No module named setuptools这句错误提示的表面意思是:没有setuptools的模块, ...

  10. Python之No module named setuptools 安装pip

    早上运行程序的时候发现没有引入相应的module,然后使用pip去安装的时候发现自己没有在安装pip,于是在自己的软件群里边找见了pip安装包,在pip的解压目录下运行python setup.py ...

随机推荐

  1. TCP/IP详解学习笔记(7)-广播和多播,IGMP协议

    1.单播,多播,广播的介绍 1.1.单播(unicast) 单播是说,对特定的主机进行数据传送.例如给某一个主机发送IP数据包.这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来 说 ...

  2. BasicDataSource配备

    BasicDataSource配置 commons DBCP 配置参数简要说明 前段时间因为项目原因,要在修改数据库连接池到DBCP上,折腾了半天,有一点收获,不敢藏私,特在这里与朋友们共享. 在配置 ...

  3. 用defy来潜水最终还是挂了........

    defy526是6级,,不过好像这次我用来潜过去不足2米还是挂掉了... 国际通用的防水级别认证体系: IPX-0 没有防水保护 IPX-1 设备在正常操作状态下,可以提供相当于3-5毫米/分钟降雨的 ...

  4. HDU 5429 Geometric Progression

    题意:给出一个大数数列,问是不是等比数列. 解法:拿java大数搞,注意全是0的情况也是Yes.我把公比用分数表示了,灰常麻烦,题解说只要判a[i - 1] * a[i + 1] == a[i] * ...

  5. 2014年acm亚洲区域赛·鞍山站

    今天北京赛站的比赛也结束了···看了一天的直播之后意识到鞍山站的比赛都过去了一个多月了···这一个月比较萎靡···整天都在睡觉写报告画工图中度过··· 鞍山比哈尔滨还是暖和很多的···就是山上有奇怪的 ...

  6. HDU 5783 Divide the Sequence

    Divide the Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  7. Delphi word编辑

    private void but_Table_Click(object sender, EventArgs e) { object Nothing = System.Reflection.Missin ...

  8. Long Dominoes(ZOJ 2563状压dp)

    题意:n*m方格用1*3的方格填充(不能重叠)求有多少种填充方法 分析:先想状态,但想来想去就是觉得不能覆盖所有情况,隔了一天,看看题解,原来要用三进制 0 表示横着放或竖放的最后一行,1表示竖放的中 ...

  9. 【剑指offer 面试题17】合并两个排序的链表

    思路: 比较两个链表端点值的大小,通过递归的方式排列. #include <iostream> using namespace std; struct ListNode { int val ...

  10. python 常用模块

    1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称('posix', 'nt', 'os2' ...