Có cách nào đơn giản để liệt kê tên của tất cả các mô-đun trong một gói mà không cần sử dụng __all__
không?
Ví dụ, với gói này:
/testpkg
/testpkg/__init__.py
/testpkg/modulea.py
/testpkg/moduleb.py
Tôi đang tự hỏi liệu có cách chuẩn hoặc cách tích hợp nào để làm điều gì đó như thế này không:
>>> package_contents("testpkg")
['modulea', 'moduleb']
Cách tiếp cận thủ công sẽ là lặp qua các đường dẫn tìm kiếm mô-đun để tìm thư mục của gói. Sau đó, người ta có thể liệt kê tất cả các tệp trong thư mục đó, lọc ra các tệp py / pyc / pyo có tên duy nhất, loại bỏ các phần mở rộng và trả lại danh sách đó. Nhưng điều này có vẻ như là một khối lượng công việc hợp lý cho một cái gì đó mà cơ chế nhập mô-đun đã thực hiện nội bộ. Chức năng đó có hiển thị ở bất cứ đâu không?