Python项目提交成 pip 包

注册账号

注册登录 https://pypi.org/ 账号,在 “Account Setting” 中点击 “Add API token”,把创建好的 token 保存起来。

创建 setup.py 文件

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
24
25
26
27
28
29
30
31
32
33
from distutils.core import setup
from setuptools import find_packages

with open("README.rst", "r") as f:
long_description = f.read()

setup(
name='', # 包名
version='1.0.0', # 版本号
description='A small example package',
long_description=long_description,
author='',
author_email='',
url='',
install_requires=[],
license='MIT',
packages=find_packages(),
platforms=["all"],
classifiers=[
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Natural Language :: Chinese (Simplified)',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Topic :: Software Development :: Libraries'
],
)

重要参数说明:

  • name:项目的名称,name是包的分发名称。
  • version:项目的版本。需要注意的是,PyPI上只允许一个版本存在,如果后续代码有了任何更改,再次上传需要增加版本号
  • author和author_email:项目作者的名字和邮件, 用于识别包的作者。
  • description:项目的简短描述
  • long_description:项目的详细描述,会显示在PyPI的项目描述页面。必须是rst(reStructuredText) 格式的
  • packages:指定最终发布的包中要包含的packages。
  • install_requires:项目依赖哪些库,这些库会在pip install的时候自动安装
  • classifiers:其他信息,一般包括项目支持的Python版本,License,支持的操作系统。

pip 安装需要的包

1
pip install setuptools wheel twine

打包&发布

执行命令

1
2
3
4
# 打包
python setup.py sdist build
# 发布
twine upload dist/*

弹出的 username 输入:__token__,密码输入前面创建的 API token,这样就发布好 pip 包了。

这个密码每次要输入比较麻烦,执行如下配置就可以省掉输入账号密码的步骤:

在系统用户文件夹中创建 .pypirc 文件,输入内容:

1
2
3
[pypi]
username = __token__
password = 前面创建的 API token