Python命令补全工具argcomplete

这篇具有很好参考价值的文章主要介绍了Python命令补全工具argcomplete。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 概述

在使用Python 命令或者 Python的命令行工具的时候,一个痛点是没有补全。比如python -m后面输入包名字,就没有提示,每次想运行一个http server的时候,都需要搜索一下http服务的包名。另外,像pip,pipx等命令也没有提示,使用不太方便。

偶然看到argcomplete这个库,按tab键就可以给Python的命令行添加自动补全,简直是使用Python的一个神器。

具体来说,argcomplete有下面的特点:

  • 官方支持支持bash和zsh两种shell,对tcsh和fish有第三方贡献者提供的支持(不好意思Windows用户这里又被当做二等公民了 )

  • 可以对python命令和pip命令进行补全

  • 其他任何以argparse解析的第三方包的命令都可以用自动补全,添加argcomplete的几行代码就行

下面具体展开怎么对已有的工具启用自动补全,以及如何让自己的Python包支持argcomplete。

 2. 对Python和pip启用自动补全

首先通过pip命令来安装argcomplete:

pip install argcomplete

然后执行下面的语句来启用对Python和pip的自动补全:

activate-global-python-argcomplete

重启Shell,试试输入pip然后按tab,发现就会列出所有的命令选项。

3. 如何对别的第三方库启用自动补全

有些库的命令行程序是已经支持argcomplete补全,只需要用下面的命令来激活:

eval "$(register-python-argcomplete <python-app-name>)"

例如 pipx 包安装后会在系统安装一个命令行程序pipx,且pipx已经支持argcomplete,我们就可以用下面的命令来激活自动补全:

eval "$(register-python-argcomplete pipx)"

激活后输入pipx in 按tab键,就可以列出pipx所有以in开头的命令,再按tab键会在各个候选命令之间切换。

⚠️注意:这个激活命令是只对哪些代码中已经支持了argcomplete语句的程序才生效,如果代码中无这些语句,那是不生效的。

 4. 如何让自己的Python库支持自动补全

只需要增加下面几行代码,就能让你的库的命令行支持自动补全:

# 在ArgumentParser对象初始化前增加这两行
# PYTHON_ARGCOMPLETE_OK
import argcomplete, argparse

# 原有代码
parser = argparse.ArgumentParser() 
...

# 在调用parse_args()函数前增加这一行
argcomplete.autocomplete(parser)

# 原有代码
args = parser.parse_args()
...

然后你的包安装后,对应的命令行程序就可以用eval "$(register-python-argcomplete )"来补全了。

⚠️注意:如果程序执行到argcomplete.autocomplete() 被调用的地方耗时很久的话,用户按tab就会有明显的延迟感。所以尽量将一些比较耗时的操作放在argcomplete.autocomplete() 语句后面,比如一些import语句,常常比较耗时,可以往后放。

希望这个程序能让你的Python开发变得舒服一些。文章来源地址https://www.toymoban.com/news/detail-695707.html

到了这里,关于Python命令补全工具argcomplete的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】Python读写.xlsx文件(基本操作、空值补全等)

    本文介绍如何使用使用 pandas 库来读取xlsx文件中的数据。 需要安装openpyxl库才可以读取xlsx文件,使用pip install openpyxl。 当然也可以用其他的库,比如openpyxl、xlrd,可以参考: https://blog.csdn.net/moasad/article/details/120120673 https://blog.csdn.net/liuyingying0418/article/details/101066630 2.1 基本操

    2023年04月13日
    浏览(54)
  • Python 知识体系补全(闭包、装饰器、关键字参数**kwargs,位置参数*args)

    闭包:     什么是闭包,一句话,在函数中再嵌套一个函数,并且引用外部函数的变量,这就是一个闭包了     一般外部函数的返回值为内部函数      def outer(x):          def inner(y):              return x + y         return outer     # 外部函数的返回值,是内部函数     

    2024年02月06日
    浏览(39)
  • gmpy2与一些python库在vscode下没有自动补全的一种缓解方案

    经过一定的研究,该问题的原因初步判断是gmpy2这个库天生没有把补全的函数doc说明附在pip包中。且因gmpy2是由C编译而来,以dll或so的形式作为动态链接库给python调用,这意味着无法从源码薅到可用的源码注释。 接下来先讲解决方案,再简单进行问题分析说明。 省流:从pyc

    2024年01月20日
    浏览(39)
  • kubectl添加命令自动补全

    kubectl 命令自动补全功能可以极大提高使用 Kubernetes 命令行工具的效率。以下是如何为 kubectl 添加自动补全功能的方法 你可以通过以下步骤添加 kubectl 自动补全: 在大多数 Linux 发行版中,你可以使用包管理器来安装它。例如,在 Ubuntu 或 Debian 上,你可以运行: 在 CentOS 或

    2024年04月08日
    浏览(37)
  • Debian 不能自动补全命令

    前言 在Debian系统中,命令行自动补全通常是由bash shell的一个功能提供的,这个功能叫做\\\"bash-completion\\\"。如果你的系统不能自动补全命令,可能是因为\\\"bash-completion\\\"没有被正确地安装或配置。 解决 首先,检查\\\"bash-completion\\\"是否已经被安装。可以使用以下命令来检查: 如果\\\"bas

    2024年02月15日
    浏览(58)
  • linux自定义自动补全命令

    自动补全命令,就是在我们输入命令的时候使用Tab键可以补全命令,或展示可能的命令 如nginx目录下 我们看到有以下文件 1. 只有一条命令满足的情况  输入部分指令后,按下tab键,如果只有一个命令满足,则会补全完整的命令 2. 有多条命令满足的情况  此时我们按下Tab键,

    2024年02月09日
    浏览(43)
  • 【Docker】如何实现Docker 命令自动补全

    Docker 命令可以使用 tab 键补全。在命令行输入 Docker 命令时,只需输入前几个字符,然后按 Tab 键即可自动补全为正确的命令或参数。 例如,在命令行输入 docker r,然后按 Tab 键,就会自动补全为 docker run 命令。如果有多个以 r 开头的命令或参数,按第二次 Tab 键则会显示所有

    2024年02月07日
    浏览(38)
  • Linux懒人神器:命令自动补全功能!

    在Linux中,命令自动补全功能是一种被广泛使用的懒人神器。它可以极大地提高命令行操作的效率和准确性。通过命令自动补全功能,用户只需输入部分命令或文件路径的片段,系统就能自动补全其余部分,甚至可以根据上下文提供合适的选项和参数。本文将详细解释Linux的命

    2024年02月09日
    浏览(57)
  • AI 图像自动补全 Uncrop 工具介绍

    ClipDrop Uncrop是一款基于AI的图像自动补全工具,由StabilityAI旗下的Clipdrop开发。通过利用StableDiffusionXL开发的算法和深度学习技术,Uncrop可以对用户上传的图片进行自动扩展和补全,改变图片尺寸,使得图像内容得到更完整的呈现。 用户只需要上传需要补全的图片,选择想要的

    2024年02月01日
    浏览(23)
  • k8s:kubectl 命令设置简写&启用自动补全功能

    💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(K8s)是一个强大的容器编排平台,而kubectl则是与之交互的命令行工具。尽管Kubernetes提供了强大的功能,但有时候频繁输入长长的kubectl命令可能会降低效率。为了提高工作效率,我们可以通过设置别名来简化kubectl命令。 在本文

    2024年04月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包