[TOC]

概述

在Python中我们经常使用pip来安装第三方Python软件包,其实我们每个人都可以免费地将自己写的Python包发布到PyPI上,供他人来通过pip进行安装。

发布教程

网址: PyPI · The Python Package Index

我们可以通过上面的链接在PyPI官网免费创建一个帐户。

我们需要先创建一个帐户,然后才能发布测试包。

我们可以发布任意我们想要定义的包名,只要和以前发布过的包没有重名过。我们可以快速在网站[PyPI](PyPI · The Python Package Index)上检查是否有同名包。为了方便示例,我们使用aiway来作为示例的包名。

下面就开始介绍如何将自己的Python项目发布到PyPI

2.1 创建目录结构

1
2
3
4
5
6
7
.
├── README.md
├── setup.py
└── src
├── __init__.py
└── aura-util.py

然后在 setup.py 所在目录下,我们运行它来将项目本地打包:

1
python setup.py sdist  

没有问题的话,在打包之后我们会得到如下目录树:

1
2
3
4
5
6
7
8
9
10
11
12
13
.
├── README.md
├── dist
│ └── aura-utils-1.0.0.tar.gz
├── setup.py
└── src
├── AuraUtils.py
├── __init__.py
└── aura_utils.egg-info
├── PKG-INFO
├── SOURCES.txt
├── dependency_links.txt
└── top_level.txt

上传到Pypi服务器

首先在setup.py这一级的目录下建立一个系统文件 .pypirc 内容如下:

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

[pypi]
username:你的PyPi用户名
password:你的PyPi密码

验证

至此我们整个Python包的发布过程就已经完成了,我们可以(在其他机器)安装来验证一下:

1
pip install aura-utils

然后准备一个测试文件:

1
2
3
4
# test.py
import aura-utils

# Call you functions to evaluate.

在测试文件中调用自己包中的函数,看测试是否正常工作:

删除
如果你想删除自己的 Pypi 包,只需要登陆到自己的 Pypi 网站的账户,并进入到自己想要删除的项目,然后选择对应版本,点击 Optins -> Delete 即可,过程中会要求你输入删除的版本号来防止误删除,在删除后也会给你的邮箱发送邮件提醒。

但是,这不是一个好主意,因为前一个软件包的所有用户都会看到他们的安装失败。

如果要弃用程序包,可以执行的操作是使用指向新程序包的README发布最后一个发行版。有人为python-cli-ui做了那个,它被替换为cli-ui

你也可以:

setup.py运行时添加警告
或在导入时
或者用一个取决于新名称的虚拟包替换包。
说明
这个过程只是一个简单的 Python 包的发布过程,在过程中其实有许多需要注意的地方,比如 setup.py 文件应当写的更加规范,整个包内的代码也应当更加规范,应当有一个比较好的 Description 或者 README.md 文档等等。这就留在以后有机会再说吧。