0%

python打包发布pypi及更新流程

参考文档

  1. Python 快速打包发布软件PyPi上
  2. 包含setup.py的非Python文件
  3. 五步法更新pypi包体

发布

1. 安装打包依赖工具

1
pip install setuptools

2. 安装上传工具

1
pip install twine

3. 注册PYPI官网个人用户

在这里插入图片描述

4. 在和项目同级目录创建setup.py

在这里插入图片描述
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from setuptools import setup, find_packages

GFICLEE_VERSION = '2020.8.4.6'

setup(
name='cfastproject',
version=GFICLEE_VERSION,
packages=find_packages(),
include_package_data=True,
entry_points={
"console_scripts": ['cfastproject = fastproject.main:main']
},
install_requires=[
"django", "fastapi", "gcp_mixed_logging", "asgi_request_id",
"uvicorn", "google-cloud-secret-manager", "pandas",
"peewee_async", "aiopg", "aiohttp"
],
url='https://github.com/ChuXiaoYi/fastproject',
license='GNU General Public License v3.0',
author='Xiaoyi Chu',
author_email='895706056@qq.com',
description='More convenient to create fastapi project'
)

setup参数说明:

名称 描述 说明
name 项目名称 不可重复
version 项目版本 保证每次发布都是版本都是唯一的
packages 项目本身的代码
include_package_data 是否包括非包文件
entry_points 项目主入口 安装成功后,在命令行输入cfastproject 就相当于执行了fastproject.main.py中的main()
install_requires 项目依赖包
url 项目地址
license license
author 项目作者
author_email 项目邮箱
description 项目描述

5. 打包前检查

通过这一步可以检查setup.py中是否有错误,例如版本号错误

1
python setup.py check

6. 打包

1
python setup.py sdist

7. 发布前准备

  1. 在home目录下创建.pypirc 文件,写入pypi账户密码,这样每次上传就不需要在重复输入了

    1
    2
    3
    4
    5
    6
    7
    [distutils]
    index-servers =
    pypi

    [pypi]
    username:username
    password:password
  2. 本地测试

    1
    python setup.py install

    安装成功后,可以通过上面定义的命令执行一次,如果成功证明安装成功,可以继续打包了

8. 注册

上传前需要注册一下包的名称,因为这个名称必须独一无二,如被占用则注册不通过。

1
python setup.py register

9. 检查是否符合pypi要求

1
twine check dist/**_.tar.gz

在这里插入图片描述

10. 上传

1
twine upload dist/**_.tar.gz

上传成功后,到官网上搜索看看包有木有吧~
在这里插入图片描述

更新

1. 更新代码,并修改setup.py中的版本号

2. 更新包

1
python setup.py sdist bdist

3. 上传

1
twine upload dist/**_.tar.gz

4. 更新包

1
pip install --upgrade cfastproject

关于上传非包文件

setup.py同级目录下创建MANIFEST.in文件,里面的内容是需要上传的文件,例如,如果要包括项目下的所有文件:

1
recursive-include fastproject *

为了将这些文件在安装时复制到site-packages中的包文件夹,需要将setup中的include_package_data设置为True