注意事项

请在项目开始前,先去PyPI搜索,查看自己的项目名称是否已经被占用。

若事后才发现,则可能需要将项目中的对应名字全部替换,可能会由于疏忽产生新bug。

步骤1

项目结构理论上可以任意组织,只要在setup.cfgsetup.py中对应改变即可。

我推荐以下结构,因为我们自己的package一般组织得比较简单,不需要复杂的setup.cfg进行组织。假设你要上传的包的名字为TomCat

1
2
3
4
project/
    TomCat/
    README.md
    setup.py    

步骤2

给项目编写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

setup(
    name='TomCat',
    version='0.0.0.0.1',
    description='a simple web framework',
    long_description='a simple web framework',
    url='',
    author='',
    license='MIT',
    keywords=('web', 'framework'),
    packages=find_packages(),
    python_requires='>=3.6',
    install_requires=[
        'Werkzeug>=2.0.0',
        'jinja2>=3.0.0',
    ],
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
    ],
)

步骤3

去PyPI中注册账号

步骤4

安装以及更新setuptoolswheel,安装PypI的包上传工具twine,推荐在虚拟环境下进行

1
pip install --upgrade setuptools wheel twine

步骤5

构造包

1
python setup.py sdist bdist_wheel

步骤6

上传包,中途会要求你提供账号密码

1
twine upload dist/*

步骤7

记住,每次更新时,需要产生一个新的版本号(setup.py中的version字段),刚开始还没能把流程走通时,推荐初始版本号为0.0.0.0.1,也就是版本号尽可能小,等到熟练后再进行修改。

此外,反复构建时,需要把之间构造产生的旧版本的.whltar.gz文件删除后再上传,否则可能报文件存在的错误。