2012-08-24 84 views
0

這是我列出的列出已安裝模塊的基本代碼。在Python中列出已安裝模塊

import sys as s 
mod=s.modules.keys() 
for indx,each in enumerate(mod): 
    print indx,each 

但是我期待的是,它應該只打印出父模塊名稱,如用於

numpy.f2py.pprint' 
numpy.distutils.atexit' 
numpy.distutils.sys' 
numpy.f2py.sys' 

它應該再指望它作爲numpy的和移動尋找下一個模塊並重復相同方式...

+1

還有呢?你有沒有試過?在'。'之後直接分割模塊名稱。並將第一部分存儲在某個列表中,併爲每個找到的其他模塊添加一個檢查。問題是什麼? –

+0

是的,我試過了,很快就會發布,但這不是我的家庭作業,我厭倦了忘記我已經安裝了一個模塊,有時而不是試圖導入我從網上下載...還必須記住事情。 –

回答

1
import sys as s 
mod=s.modules.keys() 
mods_seen = list() 
for indx,each in enumerate(mod): 
    parts = each.split('.') 
    if not parts[0] in mods_seen: 
     print indx,each 
     mods_seen.append(parts[0]) 
+0

發現模塊是不同的,如果搜索通過Python解釋器或通過空閒或通過VIDLE解釋器.. 我一直在試驗很多! 爲什麼如此? –

0

系統命令pip freeze只是你想要什麼,但我不完全確定它是否列出所有模塊或只有與pip安裝的。

+1

後者。另外,不是每個人都使用'pip'。 –

+0

正是我不使用點... –

5
import sys 
print set([each.split('.')[0] for each in sys.modules.keys()]) 
+1

由於某種原因,它不列出numpy模塊:/ –

+0

sys.modules不是所有已安裝模塊的列表,它是已加載模塊的列表,如果您在代碼頂部添加「import numpy」,它也會顯示numpy。 – MostafaR

+0

正好,但sys.modules.keys()列出我提到的所有例子 –

0
def __listAllModules(self): 
    """ This method returns all the modules installed in python 
     including the built in ones. 
    """ 
    allmodules = list(sys.builtin_module_names) 
    allmodules += list(t[1] for t in pkgutil.iter_modules()) 
    allmodules = sorted(allmodules) 
    return allmodules