Python的setuptools详解【3】打包wheel并提交给pypi
一、说明
上文说,如何用setup.py打包成egg包,继而又有find_package()函数用法,本篇专门介绍,如何用setuptools打包成不同的软件包。
首先需要保证你有最新版的setuptools
和wheel
python -m pip install --user --upgrade setuptools wheel
二. 打包模块
# 进入到setup.py同级的目录下 python setup.py sdist bdist_wheel
打包之后多出两个文件夹,分别是hello.egg-info和dist。hello.egg-info是必要的安装信息,而dist中的压缩包就是安装包
dist中包含两个文件:
dist/ |-- hello-1.0-py3-none-any.whl `-- hello-1.0.tar.gz
三、其它打包方式
有了上面的 setup.py 文件,我们就可以打出各种安装包,主要分为两类:sdist 和 bdist。
3.1 带源发布格式(Source distribution)
使用 sdist发布,需要用户下载源码,编译安装。好处是本地编译,更符合本地电脑环境,支持的压缩格式有:
Format | Description | Notes |
---|---|---|
zip | zip file (.zip) | Windows 默认 |
gztar | gzip’ed tar file (.tar.gz) | Unix 默认 |
bztar | bzip2’ed tar file (.tar.bz2) | |
xztar | xz’ed tar file (.tar.xz) | |
ztar | compressed tar file (.tar.Z) | |
tar | tar file (.tar) |
3.2 sdist 的实现语句:
$ python setup.py sdist --formats=gztar,zip
现在目录下多出 dist 和 *.egg-info 目录,dist 内保存了我们打好的包,上面命令使用 --formats
指定了打出 .tar.gz
和 .zip
包,如果不指定则如上表根据具体平台默认格式打包。
包的名称为 setup.py
中定义的 name
, version
以及指定的包格式,格式如:firstApp-0.0.1.tar.gz。
3.3 建制发布格式包 Built distribution
使用 bdist 可以打出 built distribution,和源码包相比,由于预先编译好结果,所以安装更快,但缺点是,安装后容易发生环境冲突:
Format | Description | Notes |
---|---|---|
gztar | gzipped tar file (.tar.gz) | Unix 默认 |
bztar | bzipped tar file (.tar.bz2) | |
xztar | xzipped tar file (.tar.xz) | |
ztar | compressed tar file (.tar.Z) | |
tar | tar file (.tar) | |
zip | zip file (.zip) | Windows 默认 |
rpm | RPM | |
pkgtool | Solaris pkgtool | |
sdux | HP-UX swinstall | |
wininst | self-extracting ZIP file for Windows | |
msi | Microsoft Installer. |
3.4 bdist语句格式
同 sdist 类同,可以使用 --formats
指定包格式。如:
$ python setup.py bdist --formats=rpm
3.5 简化的便捷打包指令
同时为了简化操作,setuptools 提供了如下命令:
Command | Formats | Notes |
---|---|---|
bdist_dumb | tar, gztar, bztar, xztar, ztar, zip | Windows 默认 zip, Unix 默认 gztar |
bdist_rpm | rpm, srpm | |
bdist_wininst | wininst | |
bdist_msi | msi |
所以上面打 rpm 包可以使用:
$ python setup.py bdist_rpm
四、上传到Pypi
此时前置打包的步骤已经完成,可以开始进行上传。
4.1.利用twine
将包上传上去,首先安装twine
pip install twine
4.2.注册 PyPI 账号
登录 PyPI · The Python Package Index,注册账号
4.3 上传到PyPI仓库
1) # 使用 upload $ twine upload dist/* 输入 username 和 password 即上传至 PyPI。2) # 如果不想每次输入账号密码,可以在home目录下创建 .pypirc 文件,内容如下:[distutils] index-servers =pypipypitest[pypi] username: password: [pypitest] repository: https://test.pypi.org/legacy/ username: password:
4.4 检验
这时候就可以,下载包,然后运行里面方法了
pip install hello(mypakage)
4.5 更新版本
更新版本也很简单,只需要修改setup.py下的version
然后重新生成档案,上传
python setup.py sdist bdist_wheel twine upload dist/hello-0.0.2*
参考文章:
Python打包之setuptools - 我用python写Bug - 博客园
python 包管理工具 setuptools 详解_whatday的专栏-CSDN博客_python setuptools
Python的setuptools详解【3】打包wheel并提交给pypi相关推荐
- Python的setuptools详解【2】find_packages()
一.提要 python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名 easy_install 包名 如何创建以上的包,我们在 ...
- Python的setuptools详解【1】
一 基本概念 1.什么是setuptools setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的.所谓分发,就是将 ...
- python嗅探工具详解附源码(使用socket,带tkinter界面)
python嗅探工具详解(带tkinter界面) 点击详见原理 点击详见原理 TCP/IP协议号补充 必备基础知识 IP数据包格式 详见点此 TCP报文格式 详见点此 struct模块 在Python ...
- 【蓝桥杯Python组】2022年第十三届蓝桥杯省赛B组Python解题思路详解
第十三届蓝桥杯省赛B组Python解题思路详解 因为今年采用线上的举办方式进行比赛,所以组委会对题目做了一定的调整,将原来的5道填空+5道编程题变成了2道填空+8道编程题,据说是为了防止抄袭.其实题目 ...
- python20191031_20191031:Python取反运算详解
20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...
- Python字符编码详解
Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...
- python的执行过程_在交互式环境中执行Python程序过程详解
前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...
- windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- python变量类型-Python 变量类型详解
变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...
最新文章
- oracle数据库同步交换的方法
- 刚出炉!程序员人才补贴:单项目最高补贴1000万元
- Hough变换原始形式-直线检测
- spring零碎知识点(二)
- c/c++格式化字符串的标识
- 感觉要火!妹子实地采访网易猪厂程序员七夕怎么过
- php获取上传文件路径 fakepath,JavaScript_js获取上传文件的绝对路径实现方法,在html中input type=file - phpStudy...
- java连续创建目录_Java创建目录
- php中的list()用法中要注意的地方
- TotalFinder for Mac(Finder增强工具)
- 深入Managed DirectX9(十五)
- 48V自动启停的Stateflow应用
- 二叉树的三种非递归遍历
- 视频转换大师免费版|视频转换大师免费版下载 v9.3.6
- 易软门诊管理软件php,易软门诊管理系统最新下载
- superpixels(超像素)
- python中如何进行类的派生与继承_python 面向对象之继承与派生
- 鼠标修复DoubleClickFix
- 广州蓝景分享—遇到网页慢,我们该怎么办?
- Hystrix实现熔断降级