python3.7環(huán)境下sanic-ext未生效踩坑解析
坑:
在python3.7環(huán)境下,通過官方文檔安裝sanic即擴(kuò)展插件,但是 sanic-ext包不起作用,具體的表現(xiàn)為:無法打開路由/docs。
這里的坑在于,服務(wù)啟動(dòng)時(shí),sanic不會(huì)報(bào)錯(cuò)。因此很難定位出問題在sanic-ext。
原因:
尋找sanic-ext不起作用的原因:
首先在虛擬環(huán)境中執(zhí)行import sanic_ext
結(jié)果報(bào)錯(cuò),提示缺少importlib.metadata
查詢當(dāng)前環(huán)境下importlib.metadata的版本,發(fā)現(xiàn)在python3.7下importlib.metadata=4.2
由于本人曾在python3.8環(huán)境可以正常使用sanic-ext,所以進(jìn)入python3.8環(huán)境下檢查發(fā)現(xiàn)importlib.metadata=3.10.0
結(jié)論:
python3.7下的importlib.metadata版本與sanic-ext不匹配,導(dǎo)致其無法起作用
回過頭看:
雖然sanic-ext不會(huì)報(bào)錯(cuò),但其實(shí)sanic-ext是否生效是有跡可循的,在sanic啟動(dòng)時(shí),會(huì)有一串打印信息,可以通過打印信息中的packages中是否包含sanic-ext判斷sanic-ext是否正確生效。
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Sanic v22.9.0 │ │ Goin' Fast @ http://0.0.0.0:12345 │ ├───────────────────────┬─────────────────────────────────────────────────────────────────────────────────┤ │ │ mode: debug, single worker │ │ ▄███ █████ ██ │ server: sanic, HTTP/1.1 │ │ ██ │ python: 3.8.8 │ │ ?███████ ███▄ │ platform: Linux-4.15.0-189-generic-x86_64-with-glibc2.10 │ │ ██ │ auto-reload: enabled, /xx/xx/xx │ │ ████ ████████? │ packages: sanic-routing==22.8.0, sanic-ext==22.9.0 │ │ │ │ │ Build Fast. Run Fast. │ │
后記
python3.7的importlib.metadata高于python3.8的,不符合直覺,可能是裝其他東西更新了這個(gè)包,所以也許不是python3.7與sanic-ext不適配,這點(diǎn)有待繼續(xù)驗(yàn)證,更多關(guān)于python3.7環(huán)境sanic-ext未生效的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)腳本轉(zhuǎn)換為命令行程序
使用Python中的scaffold和click庫,你可以將一個(gè)簡單的實(shí)用程序升級(jí)為一個(gè)成熟的命令行界面工具,本文就來帶你看看具體實(shí)現(xiàn)方法,感興趣的可以了解下2022-09-09
Python標(biāo)準(zhǔn)庫之typing的用法(類型標(biāo)注)
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫之typing的用法(類型標(biāo)注),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Python判斷一個(gè)三位數(shù)是否為水仙花數(shù)的示例
今天小編就為大家分享一篇Python判斷一個(gè)三位數(shù)是否為水仙花數(shù)的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
PyQt4實(shí)時(shí)顯示文本內(nèi)容GUI的示例
今天小編就為大家分享一篇PyQt4實(shí)時(shí)顯示文本內(nèi)容GUI的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
一文搞懂Python中的進(jìn)程,線程和協(xié)程
并發(fā)編程是實(shí)現(xiàn)多任務(wù)協(xié)同處理,改善系統(tǒng)性能的方式。Python中實(shí)現(xiàn)并發(fā)編程主要依靠進(jìn)程、線程和協(xié)程,本文將通過示例詳解三者的區(qū)別,感興趣的可以了解一下2022-05-05
pycharm導(dǎo)入第三方庫的兩種方法(永不報(bào)錯(cuò))
這篇文章主要介紹了pycharm導(dǎo)入第三方庫的兩種方法(永不報(bào)錯(cuò)),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
pytorch模型保存與加載中的一些問題實(shí)戰(zhàn)記錄
一般來說,保存模型是把參數(shù)全部用model.cpu().state_dict(),然后加載模型時(shí)一般用model.load_state_dict(torch.load(model_path)),下面這篇文章主要給大家介紹了關(guān)于pytorch模型保存與加載中的一些問題實(shí)戰(zhàn)記錄,需要的朋友可以參考下2022-10-10

