zoukankan      html  css  js  c++  java
  • 快速构建CLI程序并发布到PyPi

    构造一个简单的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. 目录下新建一个同名的包(也可不同名)

    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	ree-cli>poetry build
      Building tclidemo (0.1.4)
        - Building sdist
        - Built tclidemo-0.1.4.tar.gz
        - Building wheel
        - Built tclidemo-0.1.4-py3-none-any.whl
      
      
      # 上传
      poetry publish  # 之后会要求输入 pypi 的账号密码(没有的先去注册 https://pypi.org/)
      
      (venv) E:coding	ree-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%
      

      image-20210907223317993

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

      # 安装上传的包 , 如果确实上传了装不上 最好等个一分钟哦
      pip install tclidemo==0.1.4
      
      # 执行tdo --help
      tdo --help
      
      (venv) C:Userswin10DesktopapiAutoTest>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                          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

    作者:zy7y
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    linux 网络编程
    linux之有名管道
    linux之无名管道
    linux进程
    Linux中的内核链表
    dell戴尔服务器配置RAID5(3块硬盘做RAID5+1块热备)(转发)
    盘点SQL on Hadoop中用到的主要技术
    垃圾回收算法
    JDK 中的监控与故障处理工具-05 (jstack)
    JDK 中的监控与故障处理工具-04 (jmap)
  • 原文地址:https://www.cnblogs.com/zy7y/p/15240634.html
Copyright © 2011-2022 走看看