【Python包管理系列1】python打包发布到PyPI全过程(入门版)

文章目录

  • 目的
  • 准备知识
    • PyPI
    • PyPA
    • setuptools
    • build
    • twine
  • 实战过程
  • 总结

目的

如果发布一个python包到pypi上,共他人使用,本文试图讲清楚。

准备知识

PyPI

官网地址:https://pypi.org/

全称Python Package Index(Python包索引),是 Python 编程语言的软件存储库。网站版权归Python软件官方基金会所有。

我们使用pip install安装的包,就是从这个站点(或它的镜像站)下载的,而这些包也都是其他开发者上传共享的。

这是一个公开的平台,只要注册一个账号,就有权限将包发布上去。下面我们就具体一步步做。

PyPA

官网文档地址:https://www.pypa.io/en/latest/
Github地址:https://github.com/pypa

全称Python Packaging Authority(python打包权利机构),这是一个开源Group,专门维护Python打包及发布所用到的一些工具。pip即由该团队维护,后文要用到的各种工具,基本都出自这个组织。

【Python包管理系列1】python打包发布到PyPI全过程(入门版)_第1张图片

setuptools

官方文档:https://setuptools.pypa.io/en/latest/index.html
Github:https://github.com/pypa/setuptools

setuptools是PyPA提供的包构建系统,使用它,我们只需写一份配置文件(pyproject.toml or setup.cfg or setup.py)即可,不需要太去深究其内部。

build

官方文档:https://pypa-build.readthedocs.io/en/latest/index.html
Github:https://github.com/pypa/build

build由PyPA在2020年发布了第一个版本,它提供一个命令行构建命令python -m build,即可轻松构建发布文件。

在这之前,我们必须使用python setup.py进行包的构建,带来很多问题,目前setuptools官方文档已经不在推荐在不必要的情况加编写setup.py文件,尽量用pyproject.tomlsetup.cfg代替。
【Python包管理系列1】python打包发布到PyPI全过程(入门版)_第2张图片

twine

官方文档:https://twine.readthedocs.io/en/stable/
Github:https://github.com/pypa/twine

twine是PyPA开发的一个PyPI交互程序,可以轻松将已build好的文件上传到PyPI,以供其他人下载。

实战过程

首先,安装前面提到的必要工具

pip install --upgrade build twine

撰写pyproject.toml文件

[project]
name = "pywencai"
version = "0.0.1"
dependencies = [
  "PyExecJS",
  "requests",
  "pandas"
]

梳理好宝目录结构

【Python包管理系列1】python打包发布到PyPI全过程(入门版)_第3张图片
将包进行打包

python -m build

成功后,将其推送至pypi

twine upload dist/*

该命令需要你输入pypi的用户名和密码,没有的话可以免费注册

【Python包管理系列1】python打包发布到PyPI全过程(入门版)_第4张图片
可以看到,包被成功发布到pypi,访问地址 https://pypi.org/project/pywencai/0.0.1/

总结

这是一个最简单的发布过程,并不一定会满足所有情况,比如我们想打包一些额外的文件,想撰写包的描述等,这些工作可能都是我们需要的。

但是,build工具的官方文档极其简单,并没有过多的关于这些配置的说明,实现起来很容易摸不到头脑。

所以,这里推荐另一个工具:Peotry,用它来管理包和发布包将会更简单,后面发文分享。

你可能感兴趣的:(Python填坑指南)