首頁 > 軟體

python3.7環境下sanic-ext未生效踩坑解析

2023-02-01 18:01:09

坑:

在python3.7環境下,通過官方檔案安裝sanic即擴充套件外掛,但是 sanic-ext包不起作用,具體的表現為:無法開啟路由/docs

這裡的坑在於,服務啟動時,sanic不會報錯。因此很難定位出問題在sanic-ext。

原因:

尋找sanic-ext不起作用的原因:

首先在虛擬環境中執行import sanic_ext

結果報錯,提示缺少importlib.metadata

查詢當前環境下importlib.metadata的版本,發現在python3.7下importlib.metadata=4.2

由於本人曾在python3.8環境可以正常使用sanic-ext,所以進入python3.8環境下檢查發現importlib.metadata=3.10.0

結論:

python3.7下的importlib.metadata版本與sanic-ext不匹配,導致其無法起作用

回過頭看:

雖然sanic-ext不會報錯,但其實sanic-ext是否生效是有跡可循的,在sanic啟動時,會有一串列印資訊,可以通過列印資訊中的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的,不符合直覺,可能是裝其他東西更新了這個包,所以也許不是python3.7與sanic-ext不適配,這點有待繼續驗證,更多關於python3.7環境sanic-ext未生效的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com