當聽到某些人說 xx 庫非常好用的時候,我們總是忍不住想要親自試試。
有一些庫,之所以好用,是對一些庫做了更高級的封閉,你裝了這個庫,就會附帶裝了n 多依賴庫,就前一篇文章介紹的streamlit來說,依賴包就達90 幾個之多?
比百度全家桶,還tm 的全家桶啊…
也正是因為害怕會污染我的全域Python 環境,我通常在試用新包的時候,都會使用venv 創建虛擬環境,再去安裝,完事後,再清理虛擬環境即可。
有沒有發現,整個流程,其實還是挺麻煩的。
剛好昨天晚上,Github 上瞎逛,被我發現一個庫,可以解決我一直以來的煩擾。
這個函式庫叫做 trypackage,為試庫而生的函式庫。
當你使用 try xx 指令時,它會做哪些事呢?
1.如何安裝
一條指令就可以安裝它
python3 -m pip install trypackage
可以看到trypackage 只依賴一個click 命令列庫,還是很輕量的
其實不是這樣,try 會基於virtualenv 創建虛擬環境,因此還要安裝virtualenv 和virtualenvwrapper
python3 -m pip install virtualenv virtualenvwrapper
##使用try requests,try 會建立一個虛擬環境,然後在該虛擬環境中,安裝requests ,安裝完成後,自動進入Python Shell 的模式,並且自動匯入好你要試用的套件
最貼心的是,試用完後,退出Python Shell ,會自動清理掉虛擬環境。# 3. 更多用法 #指定python 版本
我的環境沒有安裝Python 3.8,透過-p 參數,可以指定Python 3.8 ,安裝的過程太快,快得讓我有點懷疑這是不是真正的去安裝Python 3.8 解釋器了。
也可以直接指定本地的Python 版本,例如try requests -p /usr/bin/python3.7.1
#指定運行模式
Try 直接的運作模式非常多
1、當你不指定時,預設使用python shell 的模式
# 二者等价 try requests try requests --shell python
2、使用ipython有兩種指定方式
# 二者等价 try requests --ipython try requests --shell ipython3、使用ptpython 或 ptipython
這兩種模式都有程式碼提示與自動補全功能
4、使用bpython 模式Bpython 的程式碼提示與補全比ptpython 、ptipython ,更強一點,其他的差別還沒試用到。
在編輯器中開啟
#
try requests --editor指定Github 倉庫套件
# 语法示例 try <user>/<repo> # 安装 Github 上的 Kenneth/requests 上的 master 版本 try kennethreitz/requests指定已經存在的虛擬環境
#
try requests --virtualenv ~/.try/sandbox
持久化虛擬環境
預設情況下,你退出後,會自動清理掉虛擬環境,若有特殊需要,可指定--keep 參數來持久化虛擬環境
# ##### ######指定虛擬環境的目錄##########默认情况下,try 会将虚拟环境创建在一个默认的目录中,这个目录比较深,不容易记住,你可以指定 --tmpdir 参数,告诉 try 要将虚拟环境创建在这里,这个参数对于想要持久化虚拟环境的人会很有用。
try requests --tmpdir ~/.try
# 4. 配置文件
try 虽然提供命令行入参的方式来识别用户选项,但对于一些用户来说,更希望能一次性修改 try 的默认选项,而不用每次都指定多个参数。
这时候,可以在你的 APP 目录下新增一个 config.ini 文件,内容模板如下
[env] virtualenv=~/.try/sandbox python=3.8 shell=ipython keep=false always_use_editor=false tmpdir=~/.try
所谓的 APP 目录,在不同的系统中是不一样的,可以使用如下代码来查看
>>> import click >>> click.get_app_dir("try") '/Users/iswbm/Library/Application Support/try' >>>
有了 config.ini,再次 try ,就会发现效果与配置一样的预期一致。
# 5. 总结一下
Try 是一个非常实用的命令行工具,功能可以说完全击中我的痛点,能把这样一个库做出来,真的是创意十足,再一次印证 Python 是懒人第一语言 。。
以上是懶人神器 !一個創意十足的 Python 命令列工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!