python开发者打包发布工具Distutils | setuptools
2016-04-02 02:48
639 查看
1.Distutils
Distutils是Python标准库的一部分,其初衷是为开发者提供一种方便的打包方式, 同时为使用者提供方便的安装方式。
例如你创建了一个名为foo的包,包含一个foo.py文件,你想把它打包以便其它人使用。 这时候你需要写一个setup.py文件:
安装者要使用这个包时,只需要解压这个foo-1.0.tar.gz文件,再运行命令:
其他的一些用法:
2.setuptools
setuptools 是对 distutils 的增强, 尤其是引入了包依赖管理。
setuptools可以为Python包创建 egg文件, Python 与 egg 文件的关系,相当于java与jar包的关系。
setuptools 提供的 easy_install 脚本可以用来安装 egg包。 另外, easy_install 可以自动从 PyPI 上下载相关的包,并完成安装,升级。
easy_install 提供了多种安装,升级Python包的方式,例如:
3.pip
pip 是安装,管理Python包的工具。它是对 easy_install 的一种增强。 同样可以从 PyPI 上自动下载,安装包。
在pip中,
a)安装前所有需要的包都要先下载,所以不会出现安装了一部分,另一部分没安装的情况
b)所有安装的包会被跟踪,所以你可以知道为什么他们被安装,同时可以卸载。
c)无需使用 egg 文件。但是pip有Wheel(*.whl)格式的包,*.whl文件有一点与*.egg文件相似,实际上它们都是"伪装"的*.zip文件。如果将*.whl和*.egg文件的扩展名修改为*.zip,你就可以使用zip应用程序打开它,并且可以查看它包含的文件和文件夹。
使用方式简单:
总结:
(1)Distutils、setuptools以及Distribute都是python中打包安装的模块。easy_install以及pip都是一个脚本而已,他们可以从pypi仓库中下载安装python模块。
(2)一般我们在python项目中,需要引入第三方模块,有两种方式(以yaml模块为例):一种是使用python setup.py install或者easy_install yaml或者pipe intall yaml将yaml模块安装到python的lib/site-packages目录中。一种是使用python setup.py build生成模块的构建文件,然后将build目录下生成的模块目录拷贝到项目目录中,这样将项目部署其他机器上时,就不用再去安装环境了。
参考学习资料:
http://blog.yangyubo.com/2012/07/27/python-packaging/
Distutils是Python标准库的一部分,其初衷是为开发者提供一种方便的打包方式, 同时为使用者提供方便的安装方式。
例如你创建了一个名为foo的包,包含一个foo.py文件,你想把它打包以便其它人使用。 这时候你需要写一个setup.py文件:
from distutils.core import setup setup(name='foo', version='1.0', py_modules=['foo'], )然后运行命令:
python setup.py sdist然后你发现当前目录下出现一个名为dist的文件夹,里面有一个foo-1.0.tar.gz的包。 这个包里有三个文件,foo.py, setup.py, PKG-INFO,前两个文件和我们之前提到的两个文件一样。 PKG-INFO是关于包的一些信息。然后你就可以把foo-1.0.tar.gz给别人安装了。
安装者要使用这个包时,只需要解压这个foo-1.0.tar.gz文件,再运行命令:
python setup.py install这个包就会被自动安装到系统合适的位置。
其他的一些用法:
#1 build python setup.py build #2 安装 python setup.py install #3 将程序文件打包 python setup.py sdist #4 常见windows安装程序 python setup.py bdist --formats=wininst
2.setuptools
setuptools 是对 distutils 的增强, 尤其是引入了包依赖管理。
setuptools可以为Python包创建 egg文件, Python 与 egg 文件的关系,相当于java与jar包的关系。
setuptools 提供的 easy_install 脚本可以用来安装 egg包。 另外, easy_install 可以自动从 PyPI 上下载相关的包,并完成安装,升级。
easy_install 提供了多种安装,升级Python包的方式,例如:
easy_install SQLObject easy_install -f http://pythonpaste.org/package_index.html SQLObject easy_install http://example.com/path/to/MyPackage-1.2.3.tgz easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg easy_install --upgrade PyProtocols后来开发者们觉得 setuptools 开发的太慢了,fork出了 Distribute 项目,然后2013年8月, Distribute 又合并回 setuptools 0.7。
3.pip
pip 是安装,管理Python包的工具。它是对 easy_install 的一种增强。 同样可以从 PyPI 上自动下载,安装包。
在pip中,
a)安装前所有需要的包都要先下载,所以不会出现安装了一部分,另一部分没安装的情况
b)所有安装的包会被跟踪,所以你可以知道为什么他们被安装,同时可以卸载。
c)无需使用 egg 文件。但是pip有Wheel(*.whl)格式的包,*.whl文件有一点与*.egg文件相似,实际上它们都是"伪装"的*.zip文件。如果将*.whl和*.egg文件的扩展名修改为*.zip,你就可以使用zip应用程序打开它,并且可以查看它包含的文件和文件夹。
使用方式简单:
pip install pkg_name pip uninstall pkg_name
总结:
(1)Distutils、setuptools以及Distribute都是python中打包安装的模块。easy_install以及pip都是一个脚本而已,他们可以从pypi仓库中下载安装python模块。
(2)一般我们在python项目中,需要引入第三方模块,有两种方式(以yaml模块为例):一种是使用python setup.py install或者easy_install yaml或者pipe intall yaml将yaml模块安装到python的lib/site-packages目录中。一种是使用python setup.py build生成模块的构建文件,然后将build目录下生成的模块目录拷贝到项目目录中,这样将项目部署其他机器上时,就不用再去安装环境了。
参考学习资料:
http://blog.yangyubo.com/2012/07/27/python-packaging/
相关文章推荐
- python中关于字典的操作
- Python包的相对导入时出现错误的解决方法
- python的包安装和管理思路
- flask关于sae上传python第三方库及其调用
- python [tab]代码补全脚本
- Python如何模拟发送form-data请求
- python抓取网页中图片并保存到本地
- mysqlclient与python3.5兼容性问题
- 【Python】Python logging
- 机器学习算法的Python实现 (2):ID3决策树
- 【Python】Python startswith, endswith
- Python 自定义模块导入
- Python常用的字符串处理函数
- 练习001-002
- [译]学习IPython进行交互式计算和数据可视化(七)
- [译]学习IPython进行交互式计算和数据可视化(六)
- [译]学习IPython进行交互式计算和数据可视化(五)
- Python Requests安装
- [译]学习IPython进行交互式计算和数据可视化(四)
- python中多线程如何用Ctrl+C终止