python wheel 打包

官方教程 概述 教程 指南

0.1. github action

  1. 创建 GitHub 仓库
  2. 配置 pypi token
  3. 配置 action 脚本
  4. 配置本地 git 环境
  5. 配置 本地仓库
  6. 配置打包及开发环境

0.2. 最小pypi包

1
2
3
4
5
6
7
8
9
.gitignore
LICENSE
README.md
setup.py
docs/
/README.md
module/
/__init__.py # python 包标志
/__main__.py

0.3. 打包环境

1
2
3
4
# bdist
# bdist_wheel
pip install setuptools wheel twine
# twine upload dist/*

0.4. init.py

init.py 文件表明当前文件夹为 Python 模块,模块被导入时实际为此文件,模块方式运行时先执行此文件。

0.4.1. init.py 中常配置的模块参数

  • all 指定 form package import * 的内容
  • version 指定版本

0.5. main.py

main.py 文件表明当前文件夹可作为模块运行,可以文件夹、模块方式运行时执行此文件,相当于依赖模块的示例程序。

0.6. setup.py

setup.py 文件是 setuptools 打包的脚本文件,文件内应当写明包相关信息,以及其它的附属操作。

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
# 官方示例
# https://github.com/pypa/sampleproject/blob/master/setup.py

# read the contents of README file
with open("README.md", "r", encoding='utf-8') as fh:
long_description = fh.read()

setuptools.setup(
# https://packaging.python.org/guides/distributing-packages-using-setuptools/
name="example-pkg-YOUR-USERNAME-HERE", # Replace with your own username
version="0.0.1",
author="Example Author",
author_email="author@example.com",
description="A small example package",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/pypa/sampleproject",
packages=setuptools.find_packages(),
classifiers=[
# https://pypi.org/classifiers/
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.6',
)