Python 打包及上传

发布于 2022-10-25  145 次阅读


本文涉及到的链接

python 打包官方指南
python 包主站
python 包测试站
toml 语法格式指南

创建项目

项目结构

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

packaging_tutorial # 项目目录名称,自定义即可
LICENSE # 开源信息,可省略,详细可查看 https://choosealicense.com/
pyproject.toml # 包配置文件,详细查看文档开头的toml指南
README.md # 自述文件
src/example_package_YOUR_USERNAME_HERE # 后缀修改为自己的名字,防止冲突
__init__.py # 包导入文件,为空即可
example.py # 项目文件
tests # 测试文件,保留为空

pyproject.toml 创建

# 这里采用的是hatchling,也可以在官网指南进行其他选择
# requires 指的是依赖于哪些包,会自动进行下载
# [project] 中的name,项目名称,不要冲突
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[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.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"

README.md 文档创建

# 测试模块
> 这是一个测试文档

example.py 文件创建

def tests(a,b):
    return a + b

升级build

# 这里注意,linux/mac 是python3 windows 是py
python3 -m pip install --upgrade build

构建

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

安装推送文件

python3 -m pip install --upgrade twine

上传

python3 -m twine upload --repository testpypi dist/*
# 注意,这里会进行账号密码填写,注册地址:https://test.pypi.org/account/register/
# 注册后验证邮箱并开启token 地址:https://test.pypi.org/manage/account/#api-tokens

下载验证

python3 -m pip install --index-url https://test.pypi.org/simple/  example-package-YOUR-USERNAME-HERE

模块导入测试

>>> from example-package-YOUR-USERNAME-HERE import example
>>> example.tests(10,15)
25