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è)神器。
具體來(lái)說(shuō),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ǔ)全
首先通過(guò)pip命令來(lái)安裝argcomplete:
pip install argcomplete
然后執(zhí)行下面的語(yǔ)句來(lái)啟用對(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ǔ)全,只需要用下面的命令來(lái)激活:
eval "$(register-python-argcomplete <python-app-name>)"
例如 pipx 包安裝后會(huì)在系統(tǒng)安裝一個(gè)命令行程序pipx,且pipx已經(jīng)支持argcomplete,我們就可以用下面的命令來(lái)激活自動(dòng)補(bǔ)全:
eval "$(register-python-argcomplete pipx)"
激活后輸入pipx in 按tab鍵,就可以列出pipx所有以in開頭的命令,再按tab鍵會(huì)在各個(gè)候選命令之間切換。
??注意:這個(gè)激活命令是只對(duì)哪些代碼中已經(jīng)支持了argcomplete語(yǔ)句的程序才生效,如果代碼中無(wú)這些語(yǔ)句,那是不生效的。
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 )"來(lái)補(bǔ)全了。
??注意:如果程序執(zhí)行到argcomplete.autocomplete() 被調(diào)用的地方耗時(shí)很久的話,用戶按tab就會(huì)有明顯的延遲感。所以盡量將一些比較耗時(shí)的操作放在argcomplete.autocomplete() 語(yǔ)句后面,比如一些import語(yǔ)句,常常比較耗時(shí),可以往后放。
到此這篇關(guān)于Python命令補(bǔ)全工具argcomplete庫(kù)的使用的文章就介紹到這了,更多相關(guān)Python argcomplete庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3中英文關(guān)鍵詞提取的幾個(gè)方法
本文介紹Python3中文關(guān)鍵詞提取的幾種算法,包括TF-IDF(支持自定義語(yǔ)料庫(kù))、TextRank(jieba實(shí)現(xiàn))、LAC及KeyBert,覆蓋詞性篩選、共現(xiàn)分析等方法,后續(xù)將更新更前沿技術(shù)2025-07-07
Python實(shí)現(xiàn)的多進(jìn)程拷貝文件并顯示百分比功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的多進(jìn)程拷貝文件并顯示百分比功能,涉及Python多進(jìn)程、文件遍歷、拷貝等相關(guān)操作技巧,需要的朋友可以參考下2019-04-04
一篇文章快速理解python中的yield關(guān)鍵字
Python中的yield關(guān)鍵字可以讓函數(shù)變成生成器,產(chǎn)生一個(gè)值后暫停,下次調(diào)用時(shí)從上次停下的地方繼續(xù)執(zhí)行,從而節(jié)省內(nèi)存并提高效率,這篇文章主要介紹了python中yield關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下2024-11-11
python3使用libpcap庫(kù)進(jìn)行抓包及數(shù)據(jù)處理的操作方法
這篇文章主要介紹了python3使用libpcap庫(kù)進(jìn)行抓包及數(shù)據(jù)處理,需要的朋友可以參考下2022-10-10
OpenCV+face++實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別解鎖功能
這篇文章主要為大家詳細(xì)介紹了OpenCV+face++實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別解鎖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
python進(jìn)程池Pool中apply方法與apply_async方法的區(qū)別
這篇文章主要介紹了python進(jìn)程池Pool中apply方法與apply_async方法的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02

