کد را در موقعیت سامانه فایلبندیای نامگذاریشده اجرا میکند و دیکشنری سراسری ماژول حاصل را برمیگرداند. همانطور که در مورد نام اسکریپت دادهشده به خط فرمان CPython صدق میکند، file_path ممکن است به یک پرونده منبع پایتون، یک پرونده بایتکد کامپایلشده یا یک ورودی معتبر از sys.path اشاره کند که حاوی یک ماژول __main__ باشد (مثلاً یک پرونده زیپ حاوی یک پرونده __main__.py در سطح بالا).
برای یک اسکریپت ساده، کد تعیینشده بهسادگی در یک فضای نام ماژول تازه اجرا میشود. برای یک ورودی معتبر sys.path (معمولاً یک پرونده zip یا پوشه)، ابتدا آن ورودی به ابتدای sys.path اضافه میشود. سپس تابع با استفاده از مسیر بهروزشده، یک ماژول __main__ را جستوجو و اجرا میکند. توجه داشته باشید که اگر چنین ماژولی در مکان تعیینشده وجود نداشته باشد، هیچ محافظت ویژهای در برابر فراخوانی یک ورودی __main__ موجود در جای دیگری از sys.path وجود ندارد.
میتوان از آرگومان دیکشنری اختیاری init_globals برای پر کردن دیکشنری سراسریهای ماژول پیش از اجرای کد استفاده کرد. init_globals تغییر نخواهد کرد. اگر هر یک از متغیرهای سراسری خاص زیر در init_globals تعریف شده باشند، آن تعریفها توسط run_path() بازنویسی میشوند.
متغیرهای سراسری خاص __name__، __spec__، __file__، __loader__ و __package__ پیش از اجرای کد ماژول در دیکشنری سراسری تنظیم میشوند. (توجه داشته باشید که این مجموعه کوچکی از متغیرها است؛ سایر متغیرها ممکن است به طور ضمنی به عنوان جزئیات پیادهسازی مفسر تنظیم شوند.)
اگر این آرگومان اختیاری None نباشد، __name__ به run_name تنظیم میشود و در غیر این صورت به '<run_path>' تنظیم میشود.
اگر file_path مستقیماً به یک پروندهی اسکریپت ارجاع دهد (چه به عنوان کد منبع و چه به عنوان بایتکد پیشکامپایلشده)، متغیر __file__ روی file_path تنظیم خواهد شد و __spec__، __loader__ و __package__ همگی روی None تنظیم خواهند شد.
اگر file_path ارجاعی به یک ورودی معتبر sys.path باشد، متغیر __spec__ به طور مناسب برای ماژول واردشدهی __main__ تنظیم خواهد شد (یعنی __spec__.name همیشه __main__ خواهد بود). متغیرهای __file__، __loader__ و __package__ بر اساس مشخصه ماژول به طور عادی تنظیم میشوند.
تغییراتی نیز در ماژول sys اعمال میشوند. نخست، ممکن است sys.path همانطور که در بالا توضیح داده شد تغییر کند. sys.argv[0] با مقدار file_path بهروزرسانی میشود و sys.modules[__name__] با یک شیء ماژول موقتی برای ماژول در حال اجرا بهروزرسانی میشود. پیش از بازگشت تابع، همه تغییرات در آیتمهای sys بازگردانده میشوند.
توجه داشته باشید که برخلاف run_module()، تغییرات اعمالشده بر sys در این تابع اختیاری نیستند، زیرا این تنظیمات برای امکانپذیر ساختن اجرای مدخلهای sys.path ضروریاند. از آنجا که محدودیتهای ایمنی نخ همچنان برقرار است، استفاده از این تابع در کد چندنخی باید یا با قفل ایمپورت بهصورت متوالی انجام شود یا به یک فرایند جداگانه محول گردد.
همچنین ببینید
گزینههای رابط برای عملکرد معادل در خط فرمان (python path/to/script).
تغییر یافته در نسخهی 3.4: بهروزرسانی شد تا از ویژگی مشخصات ماژول که توسط PEP 451 اضافه شده است استفاده کند. این امر امکان میدهد که __cached__ در حالتی که __main__ بهجای اجرای مستقیم، از یک ورودی معتبر sys.path ایمپورت میشود، بهدرستی تنظیم شود.
تغییر یافته در نسخهی 3.12: تنظیم __cached__، __loader__ و __package__ منسوخ شده است.
تغییر یافته در نسخهی 3.15: متغیر سراسری __cached__ دیگر تنظیم نمیشود.