我試圖在 python 中撰寫一些代碼并注意到這種特殊情況。
import importlib
print(importlib.abc)
上面的代碼在 python 3.7 中運行良好,但在 python 3.10.2 中沒有。在 python 3.10.2 中,我收到以下錯誤:
AttributeError: module 'importlib' has no attribute 'abc'. Did you mean: '_abc'?
我試圖查看檔案以了解上述代碼的行為是否以某種方式發生了變化。但是找不到。我嘗試查找的檔案是Python 3.7 importlib 檔案和Python 3.10.2 importlib 檔案。
所以我想知道如何通過檔案找到python標準庫上的import陳述句匯入的東西。
注意:我知道我可以查看 dir(importlib) 以查看 importlib 在匯入后的所有內容。但我想通過檔案找到它,這樣我就可以在不使用特定 python 版本的情況下了解它們。
uj5u.com熱心網友回復:
如果你想匯入一個包的子模塊,你應該明確地這樣做:
import importlib.abc
匯入包時,Python 不會自動加載包的所有子模塊。如果沒有顯式的子模塊匯入,子模塊是否可用取決于程式中其他地方的某些代碼是否已經加載了該模塊。
至于標題中的問題,檔案通常不會包含您要求的資訊。好的檔案將徹底描述模塊的整個公共 API,但您要求的資訊不止于此。
uj5u.com熱心網友回復:
您可以使用 pythondir()函式來了解importlib包含的內容
import importlib
dir(importlib)
或者稍微不同的方法是hasattr(importlib,'abc')回傳一個布林值。
還有另一種方式是通過inspect模塊
import importlib
import inspect
inspect.getmembers(importlib) #Show all methods,attribute and ...
inspect.getmembers(importlib, inspect.ismodule) #Show only modules
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/442844.html
標籤:Python python-3.x 蟒蛇导入 python-importlib
上一篇:ModuleNotFoundError:找不到python模塊
下一篇:將分頁器指示器影片化為按鈕
