2012-03-30 45 views
9

Làm cách nào để có danh sách tất cả các mô-đun python có sẵn?Python: Danh sách đầy đủ các mô-đun

Tôi không muốn mô-đun của mô-đun. Chỉ là danh sách cơ bản của tất cả các mô-đun có sẵn trong sys.path.

help('modules') không phải là giải pháp, bởi vì tôi muốn nó có sẵn như là một biến và nó nhập khẩu các mô-đun, trong đó có tác dụng phụ.

Chỉnh sửa: Với các hiệu ứng phụ tôi có nghĩa là các thư viện như kivy của http://kivy.org/, sử dụng thực tế, mã đó được thực hiện khi bạn nhập.

+1

Tôi không thấy như thế nào đây là một câu hỏi trùng lặp, vì 'pkgutil' thậm chí còn không được đề cập trong các chủ đề khác và có một giới hạn rõ ràng ở đây: ** Không có tác dụng phụ! ** –

Trả lời

7

pkgutil - tiện ích để hỗ trợ gói

này sẽ mang lại một tuple cho tất cả các môđun con trên sys.path:

pkgutil.iter_modules() 

để xem những gì đang được nạp, xem xét:

sys.modules 

"Đây là từ điển ánh xạ tên mô-đun cho các mô-đun có đã được tải"

một danh sách các module được nạp:

sys.modules.keys() 
+1

"đã được nạp". OP muốn tất cả các mô-đun có thể tải. – liori

+0

đã chỉnh sửa câu trả lời đầu tiên –

+1

@jsbueno. pkgutil * không * trả lời như thế nào? afaict, nó cung cấp cho những gì anh ta hỏi: "danh sách tất cả các mô-đun có sẵn trong sys.path". –

5

Sử dụng kịch bản bên ngoài "pydoc" mà đến cùng với một Python cài đặt: từ lệnh shell, gõ :

$ pydoc modules 

pydoc thể được sử dụng từ bên trong Python là tốt, một cách để có nó đi tất cả mọi thứ có sẵn là:

all_mod = [] 
pydoc.ModuleScanner().run(callback=(lambda *a: all_mod.append(a[1])), onerror=lambda *a:None) 
print all_mod 
+0

Một ý tưởng hay, nhưng nó nhập khẩu các mô-đun đó (có thể có tác dụng phụ nếu bạn có những thứ như 'kivy' được cài đặt. –

+0

Điều gì pydoc thực hiện là kiểm tra thủ công tất cả các tệp sẵn có và sau đó nhập chúng - nếu bạn không muốn phần nhập , Tôi nghĩ bạn sẽ phải xem mã pydoc và sao chép từ nó để xem tất cả các mô-đun có sẵn (bao gồm cả các tệp zip và trứng). – jsbueno

Các vấn đề liên quan