Packaging Python Projects

0. Abstract

翻译文档 Packaging Python Projects, 教你打包 Python 包.

1. A Simple Project

首先创建一个文件目录:

packaging_tutorial/
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
│   └── example_package_YOUR_USERNAME_HERE/
│       ├── __init__.py
│       └── example.py
└── tests/

YOUR_USERNAME_HERE 是为了上传至 PyPI 时不至于和其它学习者上传的包冲突而给包命名的, 换上自己的用户名就好. example.py 的内容为:

def add_one(number):
	return number + 1

2. Choosing a Build Backend

pipbuild 等工具并不是真的将你的源代码转化成可发行的包(like a wheel); 这项工作由一个 build backend 完成. 就是前端和后端嘛. 常用的后端有: Hatchling, Setuptools, Flit, PDM.

pyproject.toml 文件告诉前端(pip或build)用什么后端, 四种 backend 的配置分别如下(选一个就好):

# Hatchling
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
# setuptools
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
# Flit
[build-system]
requires = ["flit_core>=3.4"]
build-backend = "flit_core.buildapi"
# PDM
[build-system]
requires = ["pdm-backend"]
build-backend = "pdm.backend"

3. Configuring Metadata

[project]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.1"
authors = [
    { name="Example Author", email="author@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.8"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[project.urls]
Homepage = "https://github.com/pypa/sampleproject"
Issues = "https://github.com/pypa/sampleproject/issues"

4. Generating Distribution Archives

先安装 build:

python3 -m pip install --upgrade build

pyproject.toml 所在的目录下执行:

python3 -m build

就会在当前目录下生成一个文件夹, 其内容如下:

dist/
├── example_package_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl
└── example_package_YOUR_USERNAME_HERE-0.0.1.tar.gz

包的构建就完成了. 好简单. 上传至 PyPI 的事就不说了.

4.1 直接 pip 构建安装

除了 python3 -m build, 你也可以在 pyproject.toml 所在的目录下执行:

pip install .  # 其实就是 pip install packaging_tutorial

就会在当前目录下生成一个文件夹, 其内容如下:

build/
├── bdist.linux-x86_64/
└── lib/
    └── example_package_satan/
        ├── __init__.py
        └── example.py

同时将包安装到 python 系统中.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值