python最常用的包管理工具是什么_Python包管理工具setuptools详解及entry point

1.什么是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好用的多,基本满足大型项目的安装和发布

2.安装setuptools

最简单安装,假定在ubuntu下

sudo apt-get install python-setuptools

3.创建一个简单的包

有了setuptools后,创建一个包基本上是无脑操作

cd /tmp

mkdir demo

cd demo

4、在demo中创建一个setup.py文件,写入如下内容:

from setuptools import setup, find_packages

setup(

name = "demo",

version = "0.1",

packages = find_packages(),

)

5、执行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包

生成的.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

包里面是一系列自动生成的文件

6、setup() 函数可用参数解释

name

egg name

name = "HelloWorld"

version = "0.1"

版本号

version = "0.1"

packages

所要包含的package(包含__init__.py的文件夹),find_packages() 函数在后面会有解释

packages = find_packages()

package_dir

所要搜索的 package 路径,这个需要与 find_packages() 中的参数成对使用,详见后面的测试

scripts

指定python源码文件

scripts = ['say_hello.py']

install_requires

install_requires = ['docutils>=0.3']

package_data

所要包含的包中的文件,格式为:

package name : [file name],当 package name 为空时,代表所有包,file name 可以为 *.txt 之类的表达。具体可以看右边的例子

package_data = {

If any package contains .txt or .rst files, include them用如下命令:

'': ['.txt', '.rst'],

And include any .msg files found in the 'hello' package, too用如下命令:

'hello': ['.msg']

}

author

author = "Me"

author_email

author_email = "me@example.com"

description

description = "This is an Example Package"

license

license = "PSF"

keywords

keywords = "hello world example examples"

url

项目主页(home page)

url = "http://example.com/HelloWorld/"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值