یک اسکریپت پایتون بنویسید که با استفاده از pkgutil تمام ماژولها و زیربستههای یک پکیج مشخص را پیدا کرده و مسیرهای import آنها را چاپ کند.
3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:32 0.0
برای حل این مسئله از ماژول استاندارد pkgutil (مثلاً pkgutil.iter_modules یا pkgutil.walk_packages) استفاده کنید؛ ابتدا پکیج مورد نظر را با importlib.import_module بارگذاری کنید و مسیر package.__path__ را به pkgutil بدهید تا ماژولها و زیربستهها کشف شوند. برنامه را طوری بسازید که نام پکیج را از خط فرمان بگیرد، قبل از جستجو بررسی کند که شئ وارد شده __path__ دارد (یعنی پکیج است) و در صورت نیاز با walk_packages بازگشتی ماژولها را نیز فهرست کند؛ نکات مفید: اضافه کردن مسیرها به sys.path، مدیریت ImportError و چاپ مسیرهای کامل import برای استفاده در اسکریپتهای اتوماسیون یا مدیریت سیستم.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این اسکریپت باید با importlib.import_module پکیج مورد نظر را بارگذاری کند و از __path__ برای اعتبارسنجی پکیج استفاده نماید. استفاده از pkgutil.walk_packages به همراه مسیر package.__path__ امکان کشف تمامی ماژولها و زیربستهها را فراهم میکند و چاپ نام کامل import مانند package.submodule کار را برای اتوماسیون ساده میکند. مراقب باشید که ممکن است بعضی پکیجها به صورت namespace باشند یا مسیرها به sys.path اضافه نشده باشد؛ در این موارد با مدیریت ImportError و اضافه کردن مسیرهای لازم به sys.path رفع میشود. همچنین هنگام چاپ مسیرهای import، باید دقت کنید که نام پکیج را با جداکنندههای مناسب (نقطه) بسازید تا استفاده در اسکریپتهای دیگر ساده باشد.
گزارش