概述

本文介绍发布pip包过程

主要分为写代码,注册账号和发布包,写文档。

写代码

总体代码目录结构如下:


  • 项目根目录文件夹
    • 包名文件夹
      • 子包1文件夹
        • __init__.py
        • 子包11.py
        • 子包12.py
      • 子包2文件夹
        • __init__.py
        • 子包21.py
        • 子包22.py
      • 子包3.py
      • __init__.py
    • setup.py
    • README.md

其中__init__py可以为空文件,主要标识这个文件夹是个包,也可以写上__all__=["子包1文件夹","子包2文件夹","子包3"],内容表示当前包有哪些内容,也可以写其他python代码,如根据不同平台导入不同包,但是不建议写复杂操作和太多逻辑。

其中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
import pathlib
from setuptools import setup

here = pathlib.Path(__file__).parent.resolve()

# 发布在pip上的说明文档
long_description = (here / 'README.md').read_text(encoding='utf-8')

setup(
name='pynlfff', # 包名
version='0.2.0', # 包版本
description='python for nlfff', # 包简单描述
long_description=long_description, # 包长描述
long_description_content_type='text/markdown', # 包长描述格式
url='https://github.com/ZanderZhao/pynlfff', # 包地址
author='ZhaoZhongRui', # 作者
author_email='zhaozhongrui21@mails.ucas.ac.cn', # 作者邮件
license='MIT', # 协议
keywords='python nlfff', # 关键词
packages=[ # 公开的子包
# 'pynlfff.pydownload',
'pynlfff.pyprepare',
'pynlfff.pypreprocess',
# 'pynlfff.pycomputer',
'pynlfff.pyproduct',
'pynlfff.pyplot',
],
install_requires=['numpy', 'h5py', 'matplotlib'], # 依赖
python_requires='>=3' # python版本依赖
)

注册账号和发布

打包文件

项目根目录文件夹下执行

1
2
3
4
5
6
# build tar
python setup.py sdist

# build wheel
pip install wheel
python setup.py bdist_wheel

发布包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 在 https://pypi.org/ 注册账号

# 发布方式1 --------------------------------
# upload tar
python setup.py sdist upload
# 输入账号密码

# upload wheel
python setup.py bdist_wheel upload
# 输入账号密码

# 发布方式2 -------------------------------
pip install twine
twine upload dist/*
# 输入账号密码