你们这些家伙,好好看看我是怎么打包的吧!
GitHub 项目地址:hit-and-blow
- 官方教程:Packaging Python Projects
- 背景知识:Modules
一、文件结构介绍
打包前,需构建如下文件结构:
packaging_tutorial/
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
│ └── YOUR_PACKAGE_NAME/
│ ├── __init__.py
│ └── example.py
└── tests/
各个 文件
/ 文件夹
说明:
packaging_tutorial
: 项目文件夹LICENSE
: 开源协议,可由 GitHub 生成pyproject.toml
: 打包配置文件README.md
: 项目文档src
: 项目结构要求的,用来放主程序YOUR_PACKAGE_NAME
: 主程序文件夹,以“你的包名”命名文件夹
二、添加配置文件
将以下内容修改一下,改改名字邮箱什么的,存成配置文件 pyproject.toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.1"
authors = [
{ name="Example Author", email="[email protected]" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"
三、打包
3.1 准备打包环境
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade build
3.2 打包
来到 pyproject.toml
所在目录,打开命令行,运行代码:
python3 -m build
操作后,当前目录下生成名为 dist
的文件夹。文件夹内是打包好的项目。
四、测试
4.1 创建一个 conda 环境
# 新建一个 conda 环境
# 如果你是 conda-forge 用户,可以使用 mamba 替代 conda
mamba create -n python_37 python=3.7
# 激活环境
conda activate python_37
# 检查环境
conda info --envs
# 退出环境(如需)
conda deactivate
# 删除环境(如需)
conda env remove --name python_37
PS: Python 版本不能低于
toml
文件中requires-python
的要求
4.2 本地安装
从源代码安装软件包
# Install from source
# 来到项目根目录,运行
pip install -e .
# 或者从本地 wheel 文件安装
# pip install dist/[YOUR_PACKAGE]-[VERSION]-py3-none-any.whl
# 卸载软件包
pip uninstall [YOUR_PACKAGE]
安装完成后,就可以通过 import [YOUR_PACKAGE]
对包进行各种测试了。
五、上传
5.1 准备上传环境
python3 -m pip install --upgrade twine
5.2 注册 PyPI 账号
PyPI 提供了测试服和正式服。测试上传选测试账号,正式上传选正式账号。
注册账号后申请 API token.
注册账号的链接 | 获取 API token 的链接 | |
---|---|---|
测试服 | test.pypi.org/account/register | test.pypi.org/manage/account |
正式服 | pypi.org/account/register | pypi.org/manage/account |
Note: 正式服需要完成 2FA 验证才能获取 API token,测试服无需验证
5.3 上传到 PyPI
两种情况:
1)上传测试服 TestPyPI:
python3 -m twine upload --repository testpypi dist/*
2)上传正式服 PyPI:
twine upload dist/*
运行命令后,命令行会要求你输入 username
和 password
。
username
填__token__
password
填你的API token
,就是pypi-
开头那串东西
5.4 下载使用
现在可以用 pip install [YOUR_PACKAGE]
下载使用了!
🖐️ 不要走开🖐️ 广告时间到!
作为练习,我为豆瓣 9.1 分的 《世界游戏大全51》 中的小游戏“猜颜色”写了解算器(作弊器)并打包上传到 PyPI。如果感兴趣,可以在 PyPI 或 GitHub 下载~