با استفاده از ماژول pkgutil یک اسکریپت پایتون بنویسید که همه ماژولها و زیرماژولهای یک پکیج مشخص را به صورت نامهای نقطهای (dotted names) فهرست کند.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:13 0.0
برای حل این مسئله از pkgutil.iter_modules همراه با importlib.import_module استفاده کنید: ابتدا پکیج را وارد کنید، مسیر پکیج را بگیرید و با iter_modules روی آن مسیر پیمایش کنید، برای هر مورد اگر ispkg بود بازگشتی (recursive) به زیرماژولها انجام دهید و نامهای کامل ماژول را چاپ کنید؛ از try/except برای مدیریت پکیجهای ناموجود و خطاهای ایمپورت استفاده کنید. این روش در اتوماسیون و اسکریپتهای مدیریتی (DevOps) کاربرد دارد تا بهصورت پویا پلاگینها یا ماژولهای قابلاستفاده را کشف کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته مهم این است که هنگام استفاده از pkgutil.iter_modules برای یک پکیج باید مسیر __path__ پکیج را بگیرید و نام پدر را با نام واحدهای ماژول ترکیب کنید تا نامهای نقطهای بدست آیند. همچنین برای زیرپکیجها از ispkg استفاده کنید و به بازگشت غیرخطی توجه کنید؛ namespace packages ممکن است مسیر خالی داشته باشند. برای ایمنی اجرای ماژولها، با try/except از ImportError یا ModuleNotFoundError استفاده کنید و تنها با importlib.import_module بارگذاری کنید تا از اجرای ناخواسته کد جلوگیری شود. این کار در اتوماسیون و کشف پلاگینها مفید است و به مدیریت پویا ماژولها کمک میکند.
گزارش