argcomplete,一个 Python 命令行神器

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

作者:Yunfeng Wang,出处:https://vra.github.io/

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 <app-name>)"来补全了。

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

希望这个程序能让你的 Python 开发变得舒服一些。


如果大家想进一步了解学习更多 Python 库,可以考虑关注下这个专栏哦。

a5355019e03d631d43b1820774675ea6.jpeg

- EOF -

文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~

推荐阅读  点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

👇关注我的公众号👇

告诉你更多细节干货

8c4ee389704afd835c92ab14cdc92d51.jpeg

欢迎围观我的朋友圈

👆每天更新所想所悟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值