2017-08-31 55 views
-1

例如,我輸入JSON像這樣import json現在在某處碼我要檢查它是否已導入。它應該是這樣的:has_imported(module_name)如何檢查python模塊是否已導入?

爲什麼我問這個的原因是因爲我想了解pkgutil.walk_packages()作品。它必須導入它列出的模塊,但由於某些原因,某些模塊不能導入。好像我必須用一個單獨的函數導入它們,但是首先這個函數需要「知道」它作爲參數獲取的模塊是否被導入。

有一些類似的問題,但我從滿意答案很遠。

+0

如果你寫你的文件的頂部'進口json',那麼你就可以確信它在該文件中導入。這並不意味着它會被導入*到處*(在其他文件中)。這可能是造成混亂的原因嗎?或者你是否想知道是否有任何一個軟件包通常是由其他任何模塊導入的? (如果是這樣,什麼?) – deceze

+0

如果你想知道如何'pkgutil.walk_packages()'的作品,爲什麼不[僅僅看它的源代碼(https://github.com/python/cpython/blob/b9c3da5c89c66dcccf382e8f196746da2a06d4cc /Lib/pkgutil.py#L53-L107)? – Chris

+0

@deceze不,不是。我使用'walk_packages'導入模塊(據我所知它可以即時導入模塊),但列表中的某些模塊似乎並未被導入。我只是想弄清楚爲什麼, – Foobard

回答

2

測試在sys.modules詞典模塊名稱:

import sys 

print("sys" in sys.modules) #True 
print("datetime" in sys.modules) #False 
print("json" in sys.modules) #False 
+0

在交互模式之前,所有的人都返回TRUE;。那個怎麼樣? – Foobard

+1

@Foobard,嘗試打開命令行的另一個實例(或您正在使用的其他實例)。我只是檢查它在我的終端(VER的Python 3) - 日期時間和JSON檢查返回False – trthhrtz

+0

我剛剛檢查了它在我的終端也和耶現在它按預期工作。我想知道爲什麼它沒有在那個終端。我100%肯定我沒有導入我檢查過的模塊。 – Foobard