Python命令補(bǔ)全工具argcomplete庫(kù)的使用
1. 概述
在使用Python 命令或者 Python的命令行工具的時(shí)候,一個(gè)痛點(diǎn)是沒有補(bǔ)全。比如python -m后面輸入包名字,就沒有提示,每次想運(yùn)行一個(gè)http server的時(shí)候,都需要搜索一下http服務(wù)的包名。另外,像pip,pipx等命令也沒有提示,使用不太方便。
偶然看到argcomplete這個(gè)庫(kù),按tab鍵就可以給Python的命令行添加自動(dòng)補(bǔ)全,簡(jiǎn)直是使用Python的一個(gè)神器。
具體來說,argcomplete有下面的特點(diǎn):
- 官方支持支持bash和zsh兩種shell,對(duì)tcsh和fish有第三方貢獻(xiàn)者提供的支持(不好意思Windows用戶這里又被當(dāng)做二等公民了 )
- 可以對(duì)python命令和pip命令進(jìn)行補(bǔ)全
- 其他任何以argparse解析的第三方包的命令都可以用自動(dòng)補(bǔ)全,添加argcomplete的幾行代碼就行
下面具體展開怎么對(duì)已有的工具啟用自動(dòng)補(bǔ)全,以及如何讓自己的Python包支持argcomplete。
2. 對(duì)Python和pip啟用自動(dòng)補(bǔ)全
首先通過pip命令來安裝argcomplete:
pip install argcomplete
然后執(zhí)行下面的語句來啟用對(duì)Python和pip的自動(dòng)補(bǔ)全:
activate-global-python-argcomplete
重啟Shell,試試輸入pip然后按tab,發(fā)現(xiàn)就會(huì)列出所有的命令選項(xiàng)。
3. 如何對(duì)別的第三方庫(kù)啟用自動(dòng)補(bǔ)全
有些庫(kù)的命令行程序是已經(jīng)支持argcomplete補(bǔ)全,只需要用下面的命令來激活:
eval "$(register-python-argcomplete <python-app-name>)"
例如 pipx 包安裝后會(huì)在系統(tǒng)安裝一個(gè)命令行程序pipx,且pipx已經(jīng)支持argcomplete,我們就可以用下面的命令來激活自動(dòng)補(bǔ)全:
eval "$(register-python-argcomplete pipx)"
激活后輸入pipx in 按tab鍵,就可以列出pipx所有以in開頭的命令,再按tab鍵會(huì)在各個(gè)候選命令之間切換。
??注意:這個(gè)激活命令是只對(duì)哪些代碼中已經(jīng)支持了argcomplete語句的程序才生效,如果代碼中無這些語句,那是不生效的。
4. 如何讓自己的Python庫(kù)支持自動(dòng)補(bǔ)全
只需要增加下面幾行代碼,就能讓你的庫(kù)的命令行支持自動(dòng)補(bǔ)全:
# 在ArgumentParser對(duì)象初始化前增加這兩行 # PYTHON_ARGCOMPLETE_OK import argcomplete, argparse # 原有代碼 parser = argparse.ArgumentParser() ... # 在調(diào)用parse_args()函數(shù)前增加這一行 argcomplete.autocomplete(parser) # 原有代碼 args = parser.parse_args() ...
然后你的包安裝后,對(duì)應(yīng)的命令行程序就可以用eval "$(register-python-argcomplete )"來補(bǔ)全了。
??注意:如果程序執(zhí)行到argcomplete.autocomplete() 被調(diào)用的地方耗時(shí)很久的話,用戶按tab就會(huì)有明顯的延遲感。所以盡量將一些比較耗時(shí)的操作放在argcomplete.autocomplete() 語句后面,比如一些import語句,常常比較耗時(shí),可以往后放。
到此這篇關(guān)于Python命令補(bǔ)全工具argcomplete庫(kù)的使用的文章就介紹到這了,更多相關(guān)Python argcomplete庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows環(huán)境中python連接到達(dá)夢(mèng)庫(kù)及相關(guān)報(bào)錯(cuò)解決辦法
達(dá)夢(mèng)數(shù)據(jù)庫(kù)是由中國(guó)達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司開發(fā)的一款國(guó)產(chǎn)數(shù)據(jù)庫(kù)管理系統(tǒng),這篇文章主要介紹了windows環(huán)境中python連接到達(dá)夢(mèng)庫(kù)及相關(guān)報(bào)錯(cuò)解決辦法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-07-07
Python自動(dòng)化辦公之處理CSV和Excel文件的操作指南
面向數(shù)據(jù)分析、報(bào)表生成與系統(tǒng)集成的日常工作,CSV 與 Excel 幾乎是最常用的兩種表格數(shù)據(jù)格式,下面我們就來系統(tǒng)講解如何在 Python 中高效讀寫 CSV 和 Excel吧2025-11-11
python使用箱型圖剔除異常值的實(shí)現(xiàn)方法
python中的箱線圖可用于分析數(shù)據(jù)中的異常值,下面這篇文章主要給大家介紹了關(guān)于python使用箱型圖剔除異常值的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Python 比較兩個(gè) CSV 文件的三種方法并打印出差異
這篇文章主要介紹了Python 比較兩個(gè) CSV 文件并打印出差異,本文將討論比較兩個(gè) CSV 文件的各種方法,我們將包括執(zhí)行此操作的最“Pythonic”方式和可幫助簡(jiǎn)化此任務(wù)的外部 Python 模塊,需要的朋友可以參考下2023-06-06
Python EOL while scanning string literal問題解決方法
這篇文章主要介紹了Python EOL while scanning string literal問題解決方法,本文總結(jié)出是數(shù)據(jù)庫(kù)數(shù)據(jù)出現(xiàn)問題導(dǎo)致這個(gè)問題,需要的朋友可以參考下2015-04-04
PyTorch中torch.argmax函數(shù)的使用
torch.argmax 是一個(gè)高效的工具,廣泛應(yīng)用于分類模型預(yù)測(cè)、指標(biāo)計(jì)算等場(chǎng)景,下面就來介紹一下PyTorch中torch.argmax函數(shù)的使用,感興趣的可以了解一下2025-05-05
Python?/?PyCharm虛擬環(huán)境搭建與使用方法詳解
虛擬環(huán)境是在本地創(chuàng)建一個(gè)獨(dú)立的Python環(huán)境,這個(gè)環(huán)境擁有自己的獨(dú)立的Python解釋器和包管理器,不與系統(tǒng)環(huán)境和其他虛擬環(huán)境產(chǎn)生干擾,這篇文章主要介紹了Python/PyCharm虛擬環(huán)境搭建與使用方法的相關(guān)資料,需要的朋友可以參考下2025-08-08

