您的位置:首页 > 其它

快速构建CLI程序并发布到PyPi

2021-09-07 22:56 776 查看

构造一个简单的CLI程序

typer

这个从去年就被各种营销号吹成Web框架的 第三方库, 与 FastAPI 同出一人之手,它不是Web框架,它是一个用来构建CLI程序的库,我们就简单搞个例子

# 更多用法,看文档
import typer

# 实例一下
app = typer.Typer()

# 加到命令组中 hello
@app.command()
def hello(name: str):
typer.echo(f"Hello {name}")

# 加到命令组中 goodbye 接收 一个必要参数name, --formal 可修改默认值参数
@app.command()
def goodbye(name: str, formal: bool = False):
if formal:
typer.echo(f"Goodbye Ms. {name}. Have a good day.")
else:
typer.echo(f"Bye {name}!")

poetry

依赖环境和包管理器,个人觉得最大的亮点就是可以直接打包发布到PyPi上

pip install poetry 进行安装

# 常用命令
1. 在已有项目中初始化(图方便就一直回车): poetry init
2. 完全初始化一个项目: poetry new 项目名

# 上述内容 一路回车之后 得到一个pyproject.toml文件

3. 添加依赖库并安装: poetry add typer
... 其他命令 ... 各位自己翻文档吧

正片开始

  1. 新建一个目录

    tclidemo

  2. poetry init
    一路回车

  3. poetry add typer
    安装typer

  4. 目录下新建一个同名的包(也可不同名)

    56c
  5. 里面新建一个
    main.py
    内容就是上面
    typer
    中的内容

  6. pyproject.toml
    添加
    [tool.poetry.scripts]
    后如下

    [tool.poetry]
    # 这个name 必须和 我们要打包那个目录一个名称,且不能和pypi(曾经有和现在有的包)重名
    # https://pypi.org/help/#file-name-reuse
    name = "tclidemo"
    version = "0.1.4"	# 包版本号 安装时 最好指定版本安装 pip install xx==0.1.2
    description = ""
    authors = ["zy7y <xxxxxxx@163.com>"]
    
    [tool.poetry.dependencies]
    python = "^3.9"
    typer = "^0.4.0"
    
    [tool.poetry.dev-dependencies]
    
    [build-system]
    requires = ["poetry-core>=1.0.0"]
    build-backend = "poetry.core.masonry.api"
    
    [tool.poetry.scripts]
    # 前面是命令 开头 , = 后面是 指定typer实例, 对应的就是 打包包名.模块名(main.py文件).typer对象名
    tdo = 'tclidemo.main:app'
  7. 打包&上传pypi

    PyPI · The Python Package Index

    # 执行后在当前目录下生成一个dist目录,poetry 和 npm 命令还差不多....
    poetry build
    
    (venv) E:\coding\tree-cli>poetry build
    Building tclidemo (0.1.4)
    - Building sdist
    - Built tclidemo-0.1.4.tar.gz
    - Building
    56c
    wheel
    - Built tclidemo-0.1.4-py3-none-any.whl
    
    # 上传
    poetry publish  # 之后会要求输入 pypi 的账号密码(没有的先去注册 https://pypi.org/)
    
    (venv) E:\coding\tree-cli>poetry publish
    
    Username: zy7y
    Password:
    Publishing tclidemo (0.1.4) to PyPI
    - Uploading tclidemo-0.1.4-py3-none-any.whl 0%
    - Uploading tclidemo-0.1.4-py3-none-any.whl 100%
    - Uploading tclidemo-0.1.4-py3-none-any.whl 100%
    - Uploading tclidemo-0.1.4.tar.gz 0%
    - Uploading tclidemo-0.1.4.tar.gz 100%
    - Uploading tclidemo-0.1.4.tar.gz 100%

  8. 如果没报错,那就稳了,新起个虚拟环境

    python -m venv venv

    # 安装上传的包 , 如果确实上传了装不上 最好等个一分钟哦
    pip install tclidemo==0.1.4
    
    # 执行tdo --help
    tdo --help
    (venv) C:\Users\win10\Desktop\apiAutoTest>tdo --help
    Usage: tdo [OPTIONS] COMMAND [ARGS]...
    
    Options:
    --install-completion [bash|zsh|fish|powershell|pwsh]
    Install completion for the specified shell.
    --show-completion [bash|zsh|fish|powershell|pwsh]
    Show completion for the specified shell, to
    copy it or customize the installation.
    
    --help
    1589
    Show this message and exit.
    
    Commands:
    goodbye
    hello

最后

两个库官方文档如下,更多用法等你发掘。 可以试试 pip install tclidemo==0.1.4 哦

https://typer.tiangolo.com/		# typer
https://python-poetry.org/docs/  # poetry

参考文档:https://click-docs-zh-cn.readthedocs.io/zh/latest/setuptools.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: