【Python】打包发布流程
编辑一、目录结构
.
├── myapp
│ └── __init__.py
└── setup.py
注: myapp
里面是存放源码的文件夹,里面必须有一个 __init__.py
文件
二、setup.py
from setuptools import setup
setup(
name='firstApp', # 应用名
version='0.0.1', # 版本号
packages=['myapp'], # 包括在安装包内的 Python 包
)
三、打包
1. 基于setuptools打包
sdist 打包
使用 sdist 可以打包成 source distribution,支持的压缩格式有:Format
Description
Notes
zip
zip file (.zip)
Windows 默认
gztar
gzip tar file (.tar.gz)
Unix 默认
bztar
bzip tar file (.tar.bz2)
xztar
xz tar file (.tar.xz)
ztar
compressed tar file (.tar.Z)
tar
tar file (.tar)
命令:
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
。
bdist 打包
Format
Description
Notes
gztar
gzip tar file (.tar.gz)
Unix 默认
bztar
bzip tar file (.tar.bz2)
xztar
xz 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
命令:
python setup.py bdist --formats=rpm
2. 基于 wheel 打包
python setup.py bdist_wheel
执行成功后,目录下除了 dist
和 *.egg-info
目录外,还有一个 build
目录用于存储打包中间数据。
wheel 包的名称如 firstApp-0.0.1-py3-none-any.whl
,其中 py3 指明只支持 Python3。
可以使用参数 --universal
,包名如 mfirstApp-0.0.1-py2.py3-none-any.whl
,表明 wheel 包同时支持 Python2 和 Python3
使用 --universal
生成的也被称为通用 wheel 包,反之称为纯 wheel 包。
四、上传
安装 twine
pip install twine
上传
twine upload dist/* twine upload -r test-pypi dist/* # 上传到测试仓
上传官方源需要注册 pypi 帐号
登录 https://pypi.python.org/pypi,进入 Register 注册账号,然后执行命令上传(需要输帐号密码)
如果不想每次输入账号密码,可以在家目录 linx:
~/.pypirc
,windows 在文件夹目录里输入%USERNAME%
下创建.pypirc
文件,内容如下这里配置了官方的 pypi 和 pypitest,若要配置其他仓库,按格式添加。
[distutils] index-servers = pypi pypitest [pypi] repository: https://pypi.python.org/pypi username: password: [pypitest] repository: https://test.pypi.org/legacy/ username:
五、更新
1. 更新 package 里面的源代码
2. 更新 setup.py 里面的版本信息
3. 重新打包 python setup.py bdist_wheel
4. 重新上传 twine upload -r test-pypi dist/*
六、其他
setup.py 配置项说明
name: 你定义的包名,可以用字母、数字、下划线,需要确保唯一性。 version: 项目的版本号。 author: 你(作者)的名称。 author_email: 你(作者) 的邮箱。 description: 项目的简要描述。 long_description_content_type:长描述内容的使用的标记类型,一般为 markdown 或者 rst。 url: 你这个项目的主页地址,也可以直接链接到你这个项目的Github 地址上面去。 include_package_data: 是否添加 py 以外的文件。 package_data: 需要添加 Python 的额外文件列表。 packages: 直接用 setuptool 找到你项目所有相关的包列表。 classifiers: 附加说明,比如这里写的就是使用于 Python3 版本,使用的是 MIT 协议,独立于 OS。 python_requires: python 版本要求。
详见:https://blog.csdn.net/chenfeidi1/article/details/80873979
- 0
- 0
-
赞助
微信 -
分享