一、说明

上文说,如何用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 中定义的 nameversion以及指定的包格式,格式如: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相关推荐

  1. Python的setuptools详解【2】find_packages()

    一.提要 python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名 easy_install 包名 如何创建以上的包,我们在 ...

  2. Python的setuptools详解【1】

    一 基本概念 1.什么是setuptools setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的.所谓分发,就是将 ...

  3. python嗅探工具详解附源码(使用socket,带tkinter界面)

    python嗅探工具详解(带tkinter界面) 点击详见原理 点击详见原理 TCP/IP协议号补充 必备基础知识 IP数据包格式 详见点此 TCP报文格式 详见点此 struct模块 在Python ...

  4. 【蓝桥杯Python组】2022年第十三届蓝桥杯省赛B组Python解题思路详解

    第十三届蓝桥杯省赛B组Python解题思路详解 因为今年采用线上的举办方式进行比赛,所以组委会对题目做了一定的调整,将原来的5道填空+5道编程题变成了2道填空+8道编程题,据说是为了防止抄袭.其实题目 ...

  5. python20191031_20191031:Python取反运算详解

    20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...

  6. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

  7. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  8. windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  9. python变量类型-Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

最新文章

  1. oracle数据库同步交换的方法
  2. 刚出炉!程序员人才补贴:单项目最高补贴1000万元
  3. Hough变换原始形式-直线检测
  4. spring零碎知识点(二)
  5. c/c++格式化字符串的标识
  6. 感觉要火!妹子实地采访网易猪厂程序员七夕怎么过
  7. php获取上传文件路径 fakepath,JavaScript_js获取上传文件的绝对路径实现方法,在html中input type=file - phpStudy...
  8. java连续创建目录_Java创建目录
  9. php中的list()用法中要注意的地方
  10. TotalFinder for Mac(Finder增强工具)
  11. 深入Managed DirectX9(十五)
  12. 48V自动启停的Stateflow应用
  13. 二叉树的三种非递归遍历
  14. 视频转换大师免费版|视频转换大师免费版下载 v9.3.6
  15. 易软门诊管理软件php,易软门诊管理系统最新下载
  16. superpixels(超像素)
  17. python中如何进行类的派生与继承_python 面向对象之继承与派生
  18. 鼠标修复DoubleClickFix
  19. 广州蓝景分享—遇到网页慢,我们该怎么办?
  20. Hystrix实现熔断降级

热门文章

  1. Python应用实战系列(一)-正则表达式大全
  2. MATLAB句柄相关函数和代码示例(设置美化图表属性)
  3. hadoop学习--多表关联
  4. 贝叶斯学习--极大后验概率假设和极大似然假设
  5. sp.coo_matrix() 详解
  6. Python入门100题 | 第033题
  7. Hadoop2.0 YARN
  8. Numpy Axis
  9. 【LeetCode从零单排】No36 Valid Sudoku
  10. Retrofit分析-漂亮的解耦套路