1. خط فرمان و محیط¶
مفسر سیپایتون خط فرمان و محیط را برای تنظیمات مختلف پویش میکند.
طرحوارههای خط فرمان پیادهسازیهای دیگر ممکن است متفاوت باشند. برای منابع بیشتر به پیادهسازیهای جایگزین مراجعه کنید.
1.1. خط فرمان¶
هنگام فراخوانی پایتون، میتوانید هر یک از این گزینهها را مشخص کنید:
python [-bBdEhiIOPqRsSuvVWx?] [-c command | -m module-name | script | - ] [args]
رایجترین مورد استفاده، البته، فراخوانی سادهی یک اسکریپت است:
python myscript.py
1.1.1. گزینههای رابط¶
رابط مفسر شبیه پوسته یونیکس است، اما چندین روش فراخوانی اضافی ارائه میدهد:
وقتی با ورودی استاندارد متصل به یک دستگاه tty فراخوانی شود، برای دریافت دستورها اعلان نمایش میدهد و آنها را اجرا میکند تا زمانی که یک EOF (نویسهی پایان پرونده؛ میتوانید آن را با Ctrl-D در یونیکس یا Ctrl-Z, Enter در ویندوز ایجاد کنید) خوانده شود. برای اطلاعات بیشتر دربارهی حالت تعاملی، به حالت تعاملی مراجعه کنید.
هنگامی که با آرگومان نام پرونده یا با پروندهای بهعنوان ورودی استاندارد فراخوانی شود، اسکریپتی را از آن پرونده میخواند و اجرا میکند.
هنگامی که با آرگومان نام یک پوشه فراخوانی شود، اسکریپتی با نام مناسب را از آن پوشه میخواند و اجرا میکند.
هنگامی که با
-c commandفراخوانی شود، دستور(های) پایتونِ دادهشده بهعنوان command را اجرا میکند. در اینجا command میتواند شامل چندین دستور باشد که با سطرهای جدید از هم جدا شدهاند. فضای سفیدِ ابتدای سطر در دستورهای پایتون معنادار است!وقتی با
-m module-nameفراخوانی شود، ماژول دادهشده با استفاده از سازوکار استاندارد ایمپورت یافته میشود و بهعنوان یک اسکریپت اجرا میشود.
در حالت غیرتعاملی، کل ورودی پیش از اجرا شدن تجزیه میشود.
یک گزینهی رابط، فهرست گزینههایی را که توسط مفسر مصرف میشوند، پایان میدهد؛ تمام آرگومانهای متوالی در sys.argv قرار میگیرند -- توجه داشته باشید که اولین عنصر، زیرنویس صفر (sys.argv[0])، رشتهای است که منبع برنامه را بازتاب میدهد.
- -c <command>¶
کد پایتون موجود در command را اجرا میکند. command میتواند یک یا چند دستور باشد که با سطرهای جدید از هم جدا شدهاند و مانند کد ماژول معمولی، فضای سفید ابتدای سطر در آن معنادار است.
اگر این گزینه داده شود، نخستین المان
sys.argvبرابر"-c"خواهد بود و پوشه جاری به ابتدایsys.pathافزوده میشود (که این اجازه را میدهد ماژولهای موجود در آن پوشه بهعنوان ماژولهای سطح بالا ایمپورت شوند).رویداد حسابرسی
cpython.run_commandرا با آرگومانcommandایجاد میکند.تغییر یافته در نسخهی 3.14: تورفتگی command پیش از اجرا بهطور خودکار حذف میشود.
- -m <module-name>¶
ماژول را با استفاده از سازوکار ایمپورت استاندارد بیابید و محتویات آن را به عنوان ماژول
__main__اجرا کنید.از آنجا که آرگومان یک نام ماژول است، نباید پسوند پرونده (
.py) را ذکر کنید. نام ماژول باید یک نام ماژول مطلق و معتبر پایتون باشد، اما پیادهسازی ممکن است همیشه این را اعمال نکند (مثلاً ممکن است به شما اجازه دهد از نامی که شامل خط تیره است استفاده کنید).نامهای بسته (از جمله بستههای فضای نام) نیز مجاز هستند. هنگامی که به جای یک ماژول معمولی، نام یک بسته ارائه شود، مفسر
<pkg>.__main__را به عنوان ماژول اصلی اجرا میکند. این رفتار عمداً مشابه نحوهی برخورد با پوشهها و پروندههای zip است که به عنوان آرگومان اسکریپت به مفسر داده میشوند.توجه
این گزینه را نمیتوان برای ماژولهای توکار و ماژولهای توسعهای نوشتهشده به زبان C به کار برد، زیرا آنها پروندههای ماژول پایتون ندارند. با این حال، این گزینه همچنان برای ماژولهای پیشکامپایلشده قابل استفاده است، حتی اگر پرونده منبع اصلی در دسترس نباشد.
اگر این گزینه داده شود، عنصر اول
sys.argvمسیر کامل پرونده ماژول خواهد بود (در حین یافتن پرونده ماژول، عنصر اول روی"-m"تنظیم خواهد شد). همانند گزینه-c، پوشه جاری به ابتدایsys.pathافزوده خواهد شد.میتوان از گزینهی
-Iبرای اجرای اسکریپت در حالت ایزوله استفاده کرد؛ حالتی که در آنsys.pathنه پوشهی جاری و نه پوشهی site-packages کاربر را در بر میگیرد. تمام متغیرهای محیطیPYTHON*نیز نادیده گرفته میشوند.بسیاری از ماژولهای کتابخانه استاندارد کدی دارند که هنگام اجرای آنها بهعنوان اسکریپت فراخوانی میشود. نمونهای از این موارد، ماژول
timeitاست:python -m timeit -s "setup here" "benchmarked code here" python -m timeit -h # for details
یک رویداد حسابرسی
cpython.run_moduleرا با آرگومانmodule-nameایجاد میکند.همچنین ملاحظه نمائید
runpy.run_module()کارکرد معادلی که مستقیماً در دسترس کد پایتون است
PEP 338 -- اجرای ماژولها بهصورت اسکریپت
تغییر یافته در نسخهی 3.1: نام بسته را برای اجرای یک زیرماژول
__main__ارائه کنید.تغییر یافته در نسخهی 3.4: بستههای فضای نام نیز پشتیبانی میشوند
- -
فرمانها از ورودی استاندارد (
sys.stdin) خوانده میشوند. اگر ورودی استاندارد یک پایانه باشد، گزینهی-iبهطور ضمنی در نظر گرفته میشود.اگر این گزینه داده شود، عنصر نخستِ
sys.argvبرابر"-"خواهد بود و پوشهی جاری به ابتدایsys.pathاضافه میشود.رویداد حسابرسی
cpython.run_stdinرا بدون هیچ آرگومانی ایجاد میکند.
- <script>
کد پایتون موجود در script را اجرا میکند، که باید مسیری در سامانه فایلبندی (مطلق یا نسبی) باشد و به یک پرونده پایتون، یک پوشهی حاوی پرونده
__main__.py، یا یک پرونده zip حاوی پرونده__main__.pyاشاره کند.اگر این گزینه داده شود، اولین عنصر
sys.argvنام اسکریپت، همانطور که در خط فرمان داده شده است، خواهد بود.اگر نام اسکریپت مستقیماً به یک پرونده پایتون اشاره کند، پوشهی حاوی آن پرونده به ابتدای
sys.pathافزوده میشود و آن پرونده بهعنوان ماژول__main__اجرا میشود.اگر نام اسکریپت به یک پوشه یا پرونده zip اشاره کند، نام اسکریپت به ابتدای
sys.pathاضافه میشود و پرونده__main__.pyدر آن مکان بهعنوان ماژول__main__اجرا میشود.میتوان از گزینهی
-Iبرای اجرای اسکریپت در حالت ایزوله استفاده کرد؛ حالتی که در آنsys.pathنه پوشهی اسکریپت و نه پوشهی site-packages کاربر را در بر میگیرد. تمام متغیرهای محیطیPYTHON*نیز نادیده گرفته میشوند.رویداد حسابرسی
cpython.run_fileرا با آرگومانfilenameایجاد میکند.همچنین ملاحظه نمائید
runpy.run_path()کارکرد معادلی که مستقیماً در دسترس کد پایتون است
اگر هیچ گزینهی رابطی داده نشود، -i بهطور ضمنی در نظر گرفته میشود، sys.argv[0] یک رشتهی خالی ("") است و پوشهی جاری به ابتدای sys.path افزوده میشود. همچنین، تکمیل با کلید Tab و ویرایش تاریخچه، در صورت در دسترس بودن در پلتفرم شما، بهطور خودکار فعال میشوند (به پیکربندی Readline مراجعه کنید).
همچنین ملاحظه نمائید
تغییر یافته در نسخهی 3.4: فعالسازی خودکار تکمیل با کلید Tab و ویرایش تاریخچه.
1.1.2. گزینههای عمومی¶
- --help-env¶
چاپ توضیح کوتاهی دربارهی متغیرهای محیطی مخصوص پایتون و خارج شدن.
اضافه شده در نسخهی 3.11.
- --help-xoptions¶
توضیحی از گزینههای
-Xمخصوص پیادهسازی را چاپ میکند و خارج میشود.اضافه شده در نسخهی 3.11.
- --help-all¶
اطلاعات کامل استفاده را چاپ میکند و خارج میشود.
اضافه شده در نسخهی 3.11.
- -V¶
- --version¶
شماره نسخه پایتون را چاپ کرده و خارج میشود. نمونهای از خروجی میتواند به این صورت باشد:
Python 3.8.0b2+
وقتی دو بار داده شود، اطلاعات بیشتری دربارهی ساخت چاپ میکند، مانند:
Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00) [GCC 6.2.0 20161005]
اضافه شده در نسخهی 3.6: گزینهی
-VV.
1.1.3. گزینههای متفرقه¶
- -b¶
هنگام تبدیل
bytesیاbytearrayبهstrبدون مشخص کردن کدگذاری، یا مقایسهیbytesیاbytearrayباstrیاbytesباint، هشدار صادر میکند. وقتی این گزینه دو بار داده شود (-bb) خطا صادر میکند.
- -B¶
در صورت داده شدن، پایتون هنگام ایمپورت ماژولهای منبع تلاش نمیکند پروندههای
.pycرا بنویسد. همچنینPYTHONDONTWRITEBYTECODEرا ببینید.
- --check-hash-based-pycs default|always|never¶
رفتار اعتبارسنجی پروندههای
.pycمبتنی بر هش را کنترل میکند. به بیاعتبارسازی بایتکد نهانشده مراجعه کنید. هنگامی که رویdefaultتنظیم شود، پروندههای نهانگاه بایتکد مبتنی بر هش، اعم از بررسیشده و بررسینشده، مطابق معناشناسی پیشفرض خود اعتبارسنجی میشوند. هنگامی که رویalwaysتنظیم شود، همهی پروندههای.pycمبتنی بر هش، چه بررسیشده و چه بررسینشده، در برابر پرونده منبع متناظر خود اعتبارسنجی میشوند. هنگامی که رویneverتنظیم شود، پروندههای.pycمبتنی بر هش در برابر پروندههای منبع متناظر خود اعتبارسنجی نمیشوند.معناشناسی پروندههای
.pycمبتنی بر مهر زمانی، تحت تأثیر این گزینه قرار نمیگیرد.
- -d¶
فعال کردن خروجی اشکالزدایی پارسر (فقط برای متخصصان). همچنین متغیر محیطی
PYTHONDEBUGرا ببینید.این گزینه نیازمند نسخهی اشکالزدایی پایتون است؛ در غیر این صورت نادیده گرفته میشود.
- -E¶
همه متغیرهای محیطی
PYTHON*که ممکن است تنظیم شده باشند را نادیده بگیرید، مانندPYTHONPATHوPYTHONHOME.
- -i¶
ورود به حالت تعاملی پس از اجرا.
استفاده از گزینهی
-iدر هر یک از شرایط زیر موجب ورود به حالت تعاملی میشود:وقتی یک اسکریپت بهعنوان آرگومان اول گذرانده میشود
هنگامی که از گزینهی
-cاستفاده میشودهنگامی که از گزینهی
-mاستفاده میشود
حالت تعاملی حتی زمانی که
sys.stdinبه نظر نمیرسد پایانه باشد، آغاز میشود. پروندهیPYTHONSTARTUPخوانده نمیشود.این میتواند برای بازرسی متغیرهای سراسری یا ردگیری پشته هنگامی که یک اسکریپت استثنا ایجاد میکند، مفید باشد. همچنین
PYTHONINSPECTرا ببینید.
- -I¶
پایتون را در حالت ایزوله اجرا میکند. این کار همچنین شامل گزینههای
-E،-Pو-sاست.در حالت ایزوله،
sys.pathنه پوشهی اسکریپت را در بر میگیرد و نه پوشهی site-packages کاربر را. همچنین تمام متغیرهای محیطیPYTHON*نادیده گرفته میشوند. ممکن است محدودیتهای بیشتری برای جلوگیری از تزریق کد مخرب توسط کاربر اعمال شود.اضافه شده در نسخهی 3.4.
- -O¶
دستورهای ادعا (assert) و هر کدی که مشروط به مقدار
__debug__باشد را حذف میکند. نام پروندههای کامپایلشده (bytecode) را با افزودن.opt-1پیش از پسوند.pycتغییر میدهد (به PEP 488 مراجعه کنید). همچنینPYTHONOPTIMIZEرا ببینید.تغییر یافته در نسخهی 3.5: نام پروندههای
.pycرا مطابق PEP 488 تغییر دهید.
- -OO¶
همان کار
-Oرا انجام میدهد و همچنین رشتههای مستند را دور میریزد. نام پروندههای کامپایلشده (بایتکد) را با افزودن.opt-2پیش از پسوند.pycتغییر میدهد (ببینید PEP 488).تغییر یافته در نسخهی 3.5: نام پروندههای
.pycرا مطابق PEP 488 تغییر دهید.
- -P¶
مسیر بالقوه ناامنی را به ابتدای
sys.pathاضافه نکنید:خط فرمان
python -m module: پوشهی کاری جاری را به ابتدا اضافه نکنید.خط فرمان
python script.py: پوشهی اسکریپت به ابتدا افزوده نشود. اگر اسکریپت پیوند نمادین باشد، پیوندهای نمادین حل شوند.سطرهای فرمان
python -c codeوpython(REPL): رشتهی خالی را که به معنای پوشه کاری جاری است، در ابتدا قرار ندهید.
همچنین متغیر محیطی
PYTHONSAFEPATHو گزینههای-Eو-I(ایزوله) را ببینید.اضافه شده در نسخهی 3.11.
- -q¶
پیامهای حق نشر و نسخه را حتی در حالت تعاملی نمایش ندهید.
اضافه شده در نسخهی 3.2.
- -R¶
تصادفیسازی هش را فعال کنید. این گزینه تنها زمانی اثر دارد که متغیر محیطی
PYTHONHASHSEEDبه مقداری غیر ازrandomتنظیمشده باشد، زیرا تصادفیسازی هش بهصورت پیشفرض فعال است.در نسخههای قبلی پایتون، این گزینه تصادفیسازی هش را فعال میکند، بهطوری که مقادیر
__hash__()اشیاء str و bytes با یک مقدار تصادفی غیرقابل پیشبینی «نمکگذاری» میشوند. اگرچه این مقادیر درون یک فرایند پایتون ثابت باقی میمانند، اما بین فراخوانیهای مکرر پایتون قابل پیشبینی نیستند.تصادفیسازی هش در نظر گرفته شده است تا در برابر انکار سرویس (denial-of-service) محافظت فراهم کند؛ انکار سرویسی که توسط ورودیهای بهدقت انتخابشدهای ایجاد میشود که از عملکرد بدترین حالت ساخت یک dict، یعنی پیچیدگی O(n2)، سوءاستفاده میکنند. برای جزئیات به https://ocert.org/advisories/ocert-2011-003.html مراجعه کنید.
PYTHONHASHSEEDبه شما اجازه میدهد مقدار ثابتی برای بذر هشِ مخفی تعیین کنید.اضافه شده در نسخهی 3.2.3.
تغییر یافته در نسخهی 3.7: این گزینه دیگر نادیده گرفته نمیشود.
- -s¶
پوشه site-packages کاربررا بهsys.pathاضافه نکنید.همچنین
PYTHONNOUSERSITEرا ببینید.همچنین ملاحظه نمائید
PEP 370 -- پوشه site-packages به ازای هر کاربر
- -S¶
ایمپورت ماژول
siteو دستکاریهای وابسته به site درsys.pathکه این ایمپورت در پی دارد را غیرفعال میکند. همچنین اگرsiteبعداً بهطور صریح ایمپورت شود، این دستکاریها را نیز غیرفعال میکند (اگر میخواهید این دستکاریها انجام شوند،site.main()را فراخوانی کنید).
- -u¶
جریانهای stdout و stderr را مجبور میکند بدون بافر باشند. این گزینه هیچ تأثیری بر جریان stdin ندارد.
همچنین
PYTHONUNBUFFEREDرا ببینید.تغییر یافته در نسخهی 3.7: لایه متنی جریانهای stdout و stderr اکنون بدون بافر است.
- -v¶
هر بار که یک ماژول راهاندازی میشود، پیامی چاپ میکند که نشان میدهد از کدام مکان (نام پرونده یا ماژول توکار) بارگذاری شده است. هنگامی که دو بار داده شود (
-vv)، برای هر پروندهای که هنگام جستجوی یک ماژول بررسی میشود، پیامی چاپ میکند. همچنین اطلاعاتی درباره پاکسازی ماژولها هنگام خاتمه ارائه میدهد.تغییر یافته در نسخهی 3.10: ماژول
siteمسیرهای مخصوص سایت و پروندههای.pthدر حال پردازش را گزارش میدهد.همچنین
PYTHONVERBOSEرا ببینید.
- -W arg¶
کنترل هشدار. سازوکار هشدار پایتون بهطور پیشفرض پیامهای هشدار را در
sys.stderrچاپ میکند.سادهترین تنظیمات، یک اکشن خاص را بدون قید و شرط به تمام هشدارهایی که توسط یک فرایند منتشر میشوند اعمال میکنند (حتی هشدارهایی که در غیر این صورت بهطور پیشفرض نادیده گرفته میشوند):
-Wdefault # Warn once per call location -Werror # Convert to exceptions -Walways # Warn every time -Wall # Same as -Walways -Wmodule # Warn once per calling module -Wonce # Warn once per Python process -Wignore # Never warn
نامهای اکشن را میتوان به هر اندازه که مایل باشید مختصر کرد و مفسر آنها را به نام اکشن مناسب حل میکند. برای مثال،
-Wiهمان-Wignoreاست.شکل کامل آرگومان به این صورت است:
action:message:category:module:lineno
فیلدهای خالی با همهی مقادیر مطابقت دارند؛ فیلدهای خالی انتهایی را میتوان حذف کرد. برای مثال،
-W ignore::DeprecationWarningهمهی هشدارهای DeprecationWarning را نادیده میگیرد.فیلد اکشن همانطور است که در بالا توضیح داده شد، اما فقط بر هشدارهایی اعمال میشود که با فیلدهای باقیمانده مطابقت داشته باشند.
فیلد message باید با تمام پیام هشدار تطبیق داشته باشد؛ این تطبیق بدون حساسیت به بزرگی و کوچکی حروف است.
فیلد category با دستهی هشدار مطابقت دارد (مثلاً
DeprecationWarning). این باید یک نام کلاس باشد؛ این مطابقت بررسی میکند که آیا دستهی هشدار واقعی پیام، زیرکلاسی از دستهی هشدار مشخصشده است یا خیر.فیلد ماژول با نام (کامل) ماژول تطبیق میکند؛ این تطبیق به بزرگی و کوچکی حروف حساس است.
فیلد lineno با شماره سطر تطبیق میکند، که در آن صفر با همه شماره سطرها تطبیق میکند و بنابراین معادل شماره سطر ذکرنشده است.
میتوان چندین گزینهی
-Wداد؛ وقتی یک هشدار با بیش از یک گزینه مطابقت داشته باشد، اکشن مربوط به آخرین گزینهی مطابق انجام میشود. گزینههای نامعتبر-Wنادیده گرفته میشوند (هرچند، هنگام صدور اولین هشدار، پیام هشداری دربارهی گزینههای نامعتبر چاپ میشود).هشدارها همچنین میتوانند با استفاده از متغیر محیطی
PYTHONWARNINGSو از درون یک برنامهی پایتون با استفاده از ماژولwarningsکنترل شوند. برای مثال، میتوان از تابعwarnings.filterwarnings()برای بهکارگیری یک عبارت باقاعده روی پیام هشدار استفاده کرد.برای جزئیات بیشتر به فیلتر هشدارها و توصیف پالایههای هشدار مراجعه کنید.
- -x¶
Skip the first line of the source, allowing use of non-Unix forms of
#!cmd.This can be used to turn a Python script into a Windows batch file. Similarly to adding a shebang line and setting the executable bit on Unix, the extension of the Python script can be changed to
.batand the following line can be added at the start of the script:@py -x "%~f0" %* & exit /b
Or, to specify the path to the Python interpreter explicitly:
@"C:\Path\to\python.exe" -x "%~f0" %* & exit /b
Unlike a shebang line which is a Python comment, this line is not valid Python syntax, and the
-xoption is needed to skip it.
- -X¶
برای گزینههای مختلف مخصوص پیادهسازی رزرو شده است. سیپایتون در حال حاضر مقادیر ممکن زیر را تعریف میکند:
-X faulthandlerبرای فعالسازیfaulthandler. همچنینPYTHONFAULTHANDLERرا ببینید.اضافه شده در نسخهی 3.3.
-X showrefcountبرای خروجی گرفتن از شمارش ارجاع کل و تعداد بلوکهای حافظهی استفادهشده هنگام پایان برنامه یا پس از هر دستور در مفسر تعاملی. این گزینه فقط در نسخههای اشکالزدایی (debug builds) کار میکند.اضافه شده در نسخهی 3.4.
-X tracemallocبرای شروع ردگیری تخصیصهای حافظه پایتون با استفاده از ماژولtracemalloc. بهطور پیشفرض، تنها جدیدترین فریم در ردیابی یک ردگیری ذخیره میشود. برای شروع ردگیری با محدودیت ردیابی برابر با NFRAME فریم، از-X tracemalloc=NFRAMEاستفاده کنید. برای اطلاعات بیشتر بهtracemalloc.start()وPYTHONTRACEMALLOCمراجعه کنید.اضافه شده در نسخهی 3.4.
-X int_max_str_digitsمحدودیت طول تبدیل رشتهی عدد صحیح را پیکربندی میکند. همچنینPYTHONINTMAXSTRDIGITSرا ببینید.اضافه شده در نسخهی 3.11.
-X importtimeبرای نمایش اینکه هر ایمپورت چقدر زمان میبرد. این گزینه نام ماژول، زمان تجمعی (شامل ایمپورتهای تودرتو) و زمان خود (بدون احتساب ایمپورتهای تودرتو) را نشان میدهد. توجه داشته باشید که خروجی آن ممکن است در برنامههای چندنخی به هم بریزد. کاربرد معمول آنpython -X importtime -c 'import asyncio'است.-X importtime=2خروجی اضافی را فعال میکند که نشان میدهد چه زمانی یک ماژول ایمپورتشده از قبل بارگذاری شده است. در چنین مواردی، رشتهیcachedدر هر دو ستون زمان چاپ خواهد شد.همچنین ببینید
PYTHONPROFILEIMPORTTIME.اضافه شده در نسخهی 3.7.
تغییر یافته در نسخهی 3.14:
-X importtime=2افزوده شد تا ایمپورتهای ماژولهای بارگذاریشده نیز ردگیری شوند، و مقادیری غیر از1و2برای استفاده در آینده رزرو شدند.-X dev: فعال کردن حالت توسعه پایتون که بررسیهای اضافی رانتایم را معرفی میکند؛ این بررسیها برای فعالسازی بهصورت پیشفرض بیش از حد پرهزینه هستند. همچنینPYTHONDEVMODEرا ببینید.اضافه شده در نسخهی 3.7.
-X utf8حالت UTF-8 پایتون را فعال میکند.-X utf8=0بهطور صریح حالت UTF-8 پایتون را غیرفعال میکند (حتی زمانی که در غیر این صورت بهطور خودکار فعال میشد). همچنینPYTHONUTF8را ببینید.اضافه شده در نسخهی 3.7.
-X pycache_prefix=PATHامکان نوشتن پروندههای.pycرا به جای درخت کد، در یک درخت موازی که در پوشهی دادهشده ریشه دارد فراهم میکند. همچنینPYTHONPYCACHEPREFIXرا ببینید.اضافه شده در نسخهی 3.8.
-X warn_default_encodingهنگامی که کدگذاری پیشفرض وابسته به locale برای باز کردن پروندهها استفاده شود،EncodingWarningصادر میکند. همچنینPYTHONWARNDEFAULTENCODINGرا ببینید.اضافه شده در نسخهی 3.10.
-X no_debug_rangesدرج جدولهایی را که اطلاعات مکان اضافی (سطر پایان، آفست ستون شروع و آفست ستون پایان) را به هر دستورالعمل در اشیای کد نگاشت میکنند، غیرفعال میکند. این هم زمانی مفید است که اشیای کد و پروندههای pyc کوچکتر مطلوب باشند و هم برای حذف نشانگرهای بصری مکان اضافی هنگامی که مفسر ردگیری پشته را نمایش میدهد. همچنینPYTHONNODEBUGRANGESرا ببینید.اضافه شده در نسخهی 3.11.
-X frozen_modulesتعیین میکند که آیا ماژولهای فریزشده توسط سازوکار ایمپورت نادیده گرفته شوند یا خیر. مقدارonبه این معنا است که آنها ایمپورت میشوند وoffبه این معنا است که نادیده گرفته میشوند. اگر این یک پایتون نصبشده باشد (حالت معمول)، مقدار پیشفرضonاست. اگر در حال توسعه باشد (اجرا از درخت سورس)، مقدار پیشفرضoffاست. توجه داشته باشید که ماژولهای فریزشدهimportlib_bootstrapوimportlib_bootstrap_externalهمیشه استفاده میشوند، حتی اگر این پرچم رویoffتنظیمشده باشد. همچنینPYTHON_FROZEN_MODULESرا ببینید.اضافه شده در نسخهی 3.11.
گزینه
-X perfپشتیبانی از پروفایلگیرperfلینوکس را فعال میکند. هنگامی که این گزینه ارائه شود، پروفایلگیرperfقادر خواهد بود فراخوانیهای پایتون را گزارش کند. این گزینه تنها روی برخی پلتفرمها در دسترس است و اگر روی سیستم فعلی پشتیبانی نشود، هیچ کاری انجام نمیدهد. مقدار پیشفرض "off" است. همچنینPYTHONPERFSUPPORTو پشتیبانی پایتون از پروفایلگیر perf لینوکس را ببینید.اضافه شده در نسخهی 3.12.
گزینهی
-X perf_jitپشتیبانی از پروفایلگیرperfلینوکس را همراه با پشتیبانی DWARF فعال میکند. هنگامی که این گزینه ارائه شود، پروفایلگیرperfمیتواند فراخوانیهای پایتون را با استفاده از اطلاعات DWARF گزارش کند. این گزینه تنها روی برخی پلتفرمها در دسترس است و اگر در سیستم فعلی پشتیبانی نشده باشد، هیچ کاری انجام نمیدهد. مقدار پیشفرض «off» است. همچنینPYTHON_PERF_JIT_SUPPORTو پشتیبانی پایتون از پروفایلگیر perf لینوکس را ببینید.اضافه شده در نسخهی 3.13.
-X disable_remote_debugپشتیبانی از اشکالزدایی از راه دور را که در PEP 768 شرح داده شده است، غیرفعال میکند. این شامل هم قابلیت زمانبندی کد برای اجرا در فرایندی دیگر و هم قابلیت دریافت کد برای اجرا در فرایند جاری است.این گزینه تنها در برخی پلتفرمها در دسترس است و اگر در سیستم فعلی پشتیبانی نشود، هیچ کاری انجام نمیدهد. همچنین
PYTHON_DISABLE_REMOTE_DEBUGو PEP 768 را ببینید.اضافه شده در نسخهی 3.14.
-X cpu_count=nos.cpu_count()،os.process_cpu_count()وmultiprocessing.cpu_count()را بازنویسی میکند. n باید بزرگتر یا مساوی ۱ باشد. این گزینه ممکن است برای کاربرانی که نیاز به محدود کردن منابع CPU یک سیستم کانتینری دارند، مفید باشد. همچنینPYTHON_CPU_COUNTرا ببینید. اگر n برابرdefaultباشد، هیچچیز بازنویسی نمیشود.اضافه شده در نسخهی 3.13.
-X presite=package.moduleماژولی را مشخص میکند که باید پیش از اجرای ماژولsiteو پیش از وجود داشتن ماژول__main__ایمپورت شود. بنابراین، ماژول ایمپورتشده__main__نیست. از این میتوان برای اجرای کد در ابتدای راهاندازی پایتون استفاده کرد. پایتون باید در حالت اشکالزدایی ساخته شده باشد تا این گزینه وجود داشته باشد. همچنینPYTHON_PRESITEرا ببینید.اضافه شده در نسخهی 3.13.
-X gil=0,1قفل مفسر سراسری (GIL) را بهترتیب مجبور به غیرفعال یا فعال شدن میکند. تنظیم به0تنها در ساختهای پیکربندیشده با--disable-gilدر دسترس است. همچنینPYTHON_GILو سیپایتون نخآزاد را ببینید.اضافه شده در نسخهی 3.13.
-X thread_inherit_context=0,1باعث میشودThreadبهطور پیشفرض هنگام آغاز، از رونوشتی از زمینهی فراخوانندهیThread.start()استفاده کند. در غیر این صورت، نخها با زمینهی خالی آغاز میشوند. اگر تنظیم نشده باشد، مقدار این گزینه بهطور پیشفرض در ساختهای نخآزاد1و در غیر این صورت0است. همچنینPYTHON_THREAD_INHERIT_CONTEXTرا ببینید.اضافه شده در نسخهی 3.14.
-X context_aware_warnings=0,1باعث میشود مدیر زمینهwarnings.catch_warningsبرای ذخیره وضعیت فیلتر هشدارها از یکContextVarاستفاده کند. اگر تنظیم نشده باشد، مقدار این گزینه در ساختهای نخآزاد بهطور پیشفرض1و در غیر این صورت0است. همچنینPYTHON_CONTEXT_AWARE_WARNINGSرا ببینید.اضافه شده در نسخهی 3.14.
-X tlbc=0,1در ساختهایی که با--disable-gilپیکربندی شدهاند، بایتکد نخمحلی را فعال (1، پیشفرض) یا غیرفعال (0) میکند. در صورت غیرفعال بودن، مفسر تخصصساز (specializing interpreter) نیز غیرفعال میشود. همچنین ببینید:PYTHON_TLBC.اضافه شده در نسخهی 3.14.
این گزینه همچنین امکان ارسال مقادیر دلخواه و بازیابی آنها از طریق دیکشنری
sys._xoptionsرا فراهم میکند.اضافه شده در نسخهی 3.2.
تغییر یافته در نسخهی 3.9: گزینهی
-X showalloccountحذف شد.تغییر یافته در نسخهی 3.10: گزینهی
-X oldparserحذف شد.
حذف شده در نسخهی 3.14: -J دیگر برای استفاده توسط Jython رزرو نشده است و اکنون معنای خاصی ندارد.
1.1.4. کنترل رنگ¶
مفسر پایتون بهطور پیشفرض بهگونهای پیکربندی شده است که در موقعیتهای خاص، مانند هنگام نمایش ردگیریها، از رنگها برای برجستهسازی خروجی استفاده کند. این رفتار را میتوان با تنظیم متغیرهای محیطی مختلف کنترل کرد.
تنظیم متغیر محیطی TERM روی dumb رنگ را غیرفعال میکند.
اگر متغیر محیطی FORCE_COLOR تنظیم شده باشد، رنگ صرفنظر از مقدار TERM فعال خواهد شد. این ویژگی در سیستمهای یکپارچهسازی مستمر (CI) که پایانه نیستند، اما همچنان میتوانند دنبالههای گریز ANSI را نمایش دهند، مفید است.
اگر متغیر محیطی NO_COLOR تنظیم شده باشد، پایتون تمام رنگها را در خروجی غیرفعال میکند. این مورد بر FORCE_COLOR اولویت دارد.
همهی این متغیرهای محیطی همچنین توسط ابزارهای دیگر برای کنترل خروجی رنگی استفاده میشوند. برای کنترل خروجی رنگی فقط در مفسر پایتون، میتوان از متغیر محیطی PYTHON_COLORS استفاده کرد. این متغیر بر NO_COLOR تقدم دارد که آن نیز به نوبهی خود بر FORCE_COLOR تقدم دارد.
1.2. متغیرهای محیطی¶
این متغیرهای محیطی بر رفتار پایتون تأثیر میگذارند و پیش از سوییچهای خط فرمان (بهجز -E و -I) پردازش میشوند. متعارف است که در صورت وجود تعارض، سوییچهای خط فرمان بر متغیرهای محیطی اولویت داشته باشند.
- PYTHONHOME¶
مکان کتابخانههای استاندارد پایتون را تغییر میدهد. بهطور پیشفرض، کتابخانهها در
prefix/lib/pythonversionوexec_prefix/lib/pythonversionجستجو میشوند که در آنهاprefixوexec_prefixپوشههایی وابسته به نصب هستند و مقدار پیشفرض هر دو/usr/localاست.وقتی
PYTHONHOMEروی یک پوشهی تنها تنظیم شود، مقدار آن جایگزین هر دوprefixوexec_prefixمیشود. برای تعیین مقادیر متفاوت برای این دو،PYTHONHOMEرا رویprefix:exec_prefixتنظیم کنید.
- PYTHONPATH¶
مسیر جستجوی پیشفرض برای پروندههای ماژول را گسترش میدهد. قالب آن همان قالب
PATHدر پوسته است: یک یا چند مسیرنام پوشه که باos.pathsepاز هم جدا شدهاند (مثلاً دونقطه در یونیکس یا نقطهویرگول در ویندوز). پوشههای ناموجود بیسروصدا نادیده گرفته میشوند.علاوه بر پوشههای معمولی، ورودیهای منفرد
PYTHONPATHممکن است به پروندههای zip حاوی ماژولهای خالص پایتون (چه به شکل کد منبع و چه کامپایلشده) اشاره کنند. ماژولهای توسعهای را نمیتوان از پروندههای zip ایمپورت کرد.مسیر جستجوی پیشفرض وابسته به نصب است، اما بهطور کلی با
prefix/lib/pythonversionآغاز میشود (بهPYTHONHOMEدر بالا مراجعه کنید). این مسیر همیشه بهPYTHONPATHالحاق میشود.همانطور که در بالا در بخش گزینههای رابط توضیح داده شد، یک پوشهی اضافی در مسیر جستجو، پیش از
PYTHONPATHدرج خواهد شد. مسیر جستجو را میتوان از درون یک برنامهی پایتون، بهصورت متغیرsys.path، دستکاری کرد.
- PYTHONSAFEPATH¶
اگر این مقدار به یک رشتهی غیرخالی تنظیم شده باشد، مسیری که بهطور بالقوه ناامن است به ابتدای
sys.pathاضافه نمیشود: برای جزئیات به گزینهی-Pمراجعه کنید.اضافه شده در نسخهی 3.11.
- PYTHONPLATLIBDIR¶
اگر این روی یک رشتهی غیرخالی تنظیم شده باشد، مقدار
sys.platlibdirرا بازنویسی میکند.اضافه شده در نسخهی 3.9.
- PYTHONSTARTUP¶
اگر این نام یک پروندهی خوانا باشد، دستورهای پایتون آن پرونده پیش از نمایش نخستین اعلان در حالت تعاملی اجرا میشوند. این پرونده در همان فضای نامی که دستورهای تعاملی در آن اجرا میشوند اجرا میشود تا بتوان از اشیایی که در آن تعریف یا ایمپورت شدهاند، بدون نیاز به نام کامل در نشست تعاملی استفاده کرد. همچنین میتوانید اعلانهای
sys.ps1وsys.ps2و قلابsys.__interactivehook__را در این پرونده تغییر دهید.هنگامی که در زمان راهاندازی فراخوانی میشود، رویداد حسابرسی
cpython.run_startupرا با نام پرونده به عنوان آرگومان ایجاد میکند.
- PYTHONOPTIMIZE¶
اگر این به یک رشتهی غیرخالی تنظیم شود، معادل مشخص کردن گزینهی
-Oاست. اگر به یک عدد صحیح تنظیم شود، معادل مشخص کردن گزینهی-Oبه دفعات متعدد است.
- PYTHONBREAKPOINT¶
اگر این تنظیم شده باشد، نام یک فراخوانیپذیر را با استفاده از نمادگذاری مسیر نقطهای (dotted-path) مشخص میکند. ماژول حاوی فراخوانیپذیر ایمپورت خواهد شد و سپس فراخوانیپذیر توسط پیادهسازی پیشفرض
sys.breakpointhook()اجرا خواهد شد که خود آن توسطbreakpoint()توکار فراخوانی میشود. اگر تنظیم نشده باشد یا روی رشته خالی تنظیم شده باشد، معادل مقدار "pdb.set_trace" است. تنظیم این روی رشته "0" باعث میشود پیادهسازی پیشفرضsys.breakpointhook()هیچ کاری انجام ندهد و بلافاصله بازگردد.اضافه شده در نسخهی 3.7.
- PYTHONDEBUG¶
اگر این به یک رشتهی غیرخالی تنظیم شود، معادل تعیین گزینهی
-dاست. اگر به یک عدد صحیح تنظیم شود، معادل این است که-dچندین بار تعیین شده باشد.این متغیر محیطی به نسخهی اشکالزدایی پایتون نیاز دارد، در غیر این صورت نادیده گرفته میشود.
- PYTHONINSPECT¶
اگر این به یک رشتهی غیرخالی تنظیم شده باشد، معادل تعیین گزینهی
-iاست.این متغیر را همچنین میتوان با کد پایتون از طریق
os.environتغییر داد تا حالت بازرسی (inspect mode) هنگام خاتمه برنامه بهاجبار فعال شود.رویداد حسابرسی
cpython.run_stdinرا بدون هیچ آرگومانی ایجاد میکند.تغییر یافته در نسخهی 3.12.5: (همچنین 3.11.10، 3.10.15، 3.9.20 و 3.8.20) رویدادهای حسابرسی را منتشر میکند.
تغییر یافته در نسخهی 3.13: در صورت امکان از PyREPL استفاده میکند، که در این صورت
PYTHONSTARTUPنیز اجرا میشود. رویدادهای حسابرسی منتشر میکند.
- PYTHONVERBOSE¶
اگر این روی یک رشتهی غیرخالی تنظیم شود، معادل مشخص کردن گزینهی
-vاست. اگر روی یک عدد صحیح تنظیم شود، معادل مشخص کردن-vبه دفعات متعدد است.
- PYTHONCASEOK¶
اگر این تنظیم شده باشد، پایتون در دستورات
importبزرگی و کوچکی حروف را نادیده میگیرد. این تنها در ویندوز و macOS کار میکند.
- PYTHONDONTWRITEBYTECODE¶
اگر این به یک رشتهی غیرخالی تنظیم شود، پایتون هنگام ایمپورت ماژولهای منبع تلاش نمیکند پروندههای
.pycرا بنویسد. این معادل تعیین گزینهی-Bاست.
- PYTHONPYCACHEPREFIX¶
اگر این تنظیم شده باشد، پایتون پروندههای
.pycرا به جای پوشههای__pycache__درون درخت منبع، در یک درخت پوشهی آینهای در این مسیر مینویسد. این کار معادل تعیین گزینهی-Xpycache_prefix=PATHاست.اضافه شده در نسخهی 3.8.
- PYTHONHASHSEED¶
اگر این متغیر تنظیم نشده باشد یا روی
randomتنظیم شده باشد، از یک مقدار تصادفی برای بذر دادن به هشهای شیءهای str و bytes استفاده میشود.اگر
PYTHONHASHSEEDبه یک مقدار عدد صحیح تنظیم شده باشد، از آن بهعنوان یک بذر ثابت برای تولید hash() نوعهایی که مشمول تصادفیسازی هش هستند، استفاده میشود.هدف آن امکانپذیر کردن هشکردن تکرارپذیر است، مانند خودآزمونهای خودِ مفسر، یا اینکه به یک خوشه از فرایندهای پایتون اجازه دهد مقادیر هش را به اشتراک بگذارند.
عدد صحیح باید عددی در مبنای ده و در بازهی [0,4294967295] باشد. تعیین مقدار 0، تصادفیسازی هش را غیرفعال میکند.
اضافه شده در نسخهی 3.2.3.
- PYTHONINTMAXSTRDIGITS¶
اگر این متغیر روی یک عدد صحیح تنظیم شود، از آن برای پیکربندی محدودیت سراسری طول تبدیل رشته به عدد صحیح در مفسر استفاده میشود.
اضافه شده در نسخهی 3.11.
- PYTHONIOENCODING¶
اگر این پیش از اجرای مفسر تنظیم شود، کدگذاری استفادهشده برای stdin/stdout/stderr را نادیده میگیرد، با سینتکس
encodingname:errorhandler. هر دو بخشencodingnameو:errorhandlerاختیاری هستند و همان معنایی را دارند که درstr.encode()دارند.برای stderr، بخش
:errorhandlerنادیده گرفته میشود؛ هندلر همیشه'backslashreplace'خواهد بود.تغییر یافته در نسخهی 3.4: بخش
encodingnameاکنون اختیاری است.تغییر یافته در نسخهی 3.6: در ویندوز، کدگذاری تعیینشده توسط این متغیر برای بافرهای کنسول تعاملی نادیده گرفته میشود، مگر اینکه
PYTHONLEGACYWINDOWSSTDIOنیز تعیینشده باشد. پروندهها و پایپهایی که از طریق جریانهای استاندارد تغییر مسیر دادهشدهاند، تأثیر نمیپذیرند.
- PYTHONNOUSERSITE¶
اگر این تنظیم شده باشد، پایتون
پوشهی site-packages کاربررا بهsys.pathاضافه نمیکند.همچنین ملاحظه نمائید
PEP 370 -- پوشه site-packages به ازای هر کاربر
- PYTHONUSERBASE¶
پوشهی پایهی کاربررا تعریف میکند که برای محاسبهی مسیرپوشهی site-packages کاربرو مسیرهای نصب برایpython -m pip install --userاستفاده میشود.همچنین ملاحظه نمائید
PEP 370 -- پوشه site-packages به ازای هر کاربر
- PYTHONEXECUTABLE¶
اگر این متغیر محیطی تنظیم شده باشد،
sys.argv[0]بهجای مقداری که از رانتایم C به دست میآید، به مقدار آن تنظیم میشود. فقط روی macOS کار میکند.
- PYTHONWARNINGS¶
این معادل گزینهی
-Wاست. اگر به یک رشتهی جداشده با کاما تنظیم شود، معادل مشخص کردن-Wبه دفعات متعدد است، بهطوری که فیلترهای انتهای فهرست بر فیلترهای ابتدای فهرست اولویت دارند.سادهترین تنظیمات، یک اکشن خاص را بدون قید و شرط به تمام هشدارهایی که توسط یک فرایند منتشر میشوند اعمال میکنند (حتی هشدارهایی که در غیر این صورت بهطور پیشفرض نادیده گرفته میشوند):
PYTHONWARNINGS=default # Warn once per call location PYTHONWARNINGS=error # Convert to exceptions PYTHONWARNINGS=always # Warn every time PYTHONWARNINGS=all # Same as PYTHONWARNINGS=always PYTHONWARNINGS=module # Warn once per calling module PYTHONWARNINGS=once # Warn once per Python process PYTHONWARNINGS=ignore # Never warn
برای جزئیات بیشتر به فیلتر هشدارها و توصیف پالایههای هشدار مراجعه کنید.
- PYTHONFAULTHANDLER¶
اگر این متغیر محیطی به یک رشتهی غیرخالی تنظیم شده باشد،
faulthandler.enable()در زمان راهاندازی فراخوانی میشود: یک هندلر برای سیگنالهایSIGSEGV،SIGFPE،SIGABRT،SIGBUSوSIGILLنصب میکند تا ردگیری پایتون برونریزی شود. این کار معادل گزینهی-Xfaulthandlerاست.اضافه شده در نسخهی 3.3.
- PYTHONTRACEMALLOC¶
اگر این متغیر محیطی به یک رشتهی غیرخالی تنظیم شده باشد، ردگیری تخصیصهای حافظهی پایتون با استفاده از ماژول
tracemallocآغاز میشود. مقدار این متغیر، حداکثر تعداد فریمهای ذخیرهشده در ردگیریِ یک ردیابی است. برای مثال،PYTHONTRACEMALLOC=1فقط جدیدترین فریم را ذخیره میکند. برای اطلاعات بیشتر، تابعtracemalloc.start()را ببینید. این کار معادل تنظیم گزینهی-Xtracemallocاست.اضافه شده در نسخهی 3.4.
- PYTHONPROFILEIMPORTTIME¶
اگر این متغیر محیطی روی
1تنظیم شود، پایتون نشان میدهد که هر ایمپورت چقدر طول میکشد. اگر روی2تنظیم شود، پایتون خروجی مربوط به ماژولهای ایمپورتشدهای را که از قبل بارگذاری شدهاند نیز در بر میگیرد. این کار معادل تنظیم گزینهی-Ximporttimeاست.اضافه شده در نسخهی 3.7.
تغییر یافته در نسخهی 3.14: افزوده شد
PYTHONPROFILEIMPORTTIME=2تا ایمپورتهای ماژولهای بارگذاریشده نیز ردگیری شوند.
- PYTHONASYNCIODEBUG¶
اگر این متغیر محیطی روی یک رشتهی غیرخالی تنظیم شده باشد، حالت اشکالزدایی ماژول
asyncioرا فعال کنید.اضافه شده در نسخهی 3.4.
- PYTHONMALLOC¶
تنظیم تخصیصدهندههای حافظه پایتون و/یا نصب قلابهای اشکالزدایی.
خانوادهی تخصیصدهندههای حافظهی مورد استفادهی پایتون را تنظیم میکند:
default: استفاده از تخصیصدهندههای حافظه پیشفرض.malloc: استفاده از تابعmalloc()کتابخانه C برای همه دامنهها (PYMEM_DOMAIN_RAW،PYMEM_DOMAIN_MEM،PYMEM_DOMAIN_OBJ).pymalloc: از تخصیصدهندهی pymalloc برای حوزههایPYMEM_DOMAIN_MEMوPYMEM_DOMAIN_OBJاستفاده کنید و از تابعmalloc()برای حوزهیPYMEM_DOMAIN_RAWاستفاده کنید.mimalloc: از تخصیصدهندهی mimalloc برای دامنههایPYMEM_DOMAIN_MEMوPYMEM_DOMAIN_OBJاستفاده کنید و از تابعmalloc()برای دامنهیPYMEM_DOMAIN_RAWاستفاده کنید.
نصب قلابهای اشکالزدایی:
debug: نصب قلابهای اشکالزدایی روی تخصیصدهندههای پیشفرض حافظه.malloc_debug: مانندmallocاست، اما قلابهای اشکالزدایی را نیز نصب میکند.pymalloc_debug: همانpymallocاست، اما قلابهای اشکالزدایی را نیز نصب میکند.mimalloc_debug: مانندmimallocاست، اما قلابهای اشکالزدایی را نیز نصب میکند.
توجه
در ساخت نخآزاد، مقادیر
malloc،malloc_debug،pymallocوpymalloc_debugپشتیبانی نمیشوند. فقطdefault،debug،mimallocوmimalloc_debugپذیرفته میشوند.اضافه شده در نسخهی 3.6.
تغییر یافته در نسخهی 3.7: تخصیصدهنده
"default"افزوده شد.
- PYTHONMALLOCSTATS¶
اگر روی یک رشتهی غیرخالی تنظیم شود، پایتون هر بار که یک آرنای شیء (object arena) جدید ایجاد میشود و هنگام خاموش شدن، آمار تخصیصدهندهی حافظهی pymalloc یا تخصیصدهندهی حافظهی mimalloc (هر کدام که در حال استفاده است) را چاپ میکند.
اگر متغیر محیطی
PYTHONMALLOCبرای اجبار به استفاده از تخصیصدهندهmalloc()کتابخانه C به کار رود، یا اگر پایتون بدون پشتیبانی از هر دوpymallocوmimallocپیکربندی شده باشد، این متغیر نادیده گرفته میشود.تغییر یافته در نسخهی 3.6: اکنون میتوان از این متغیر روی پایتون کامپایلشده در حالت انتشار نیز استفاده کرد. اکنون اگر روی رشتهی خالی تنظیم شود، هیچ اثری نخواهد داشت.
- PYTHONLEGACYWINDOWSFSENCODING¶
اگر روی رشتهای غیرخالی تنظیم شود، حالت پیشفرض filesystem encoding and error handler بهترتیب به مقادیر پیش از 3.6 خود یعنی 'mbcs' و 'replace' بازمیگردد. در غیر این صورت، پیشفرضهای جدید 'utf-8' و 'surrogatepass' استفاده میشوند.
همچنین میتوان این را در زمان اجرا با
sys._enablelegacywindowsfsencoding()فعال کرد.دسترسپذیری: Windows.
اضافه شده در نسخهی 3.6: برای جزئیات بیشتر به PEP 529 مراجعه کنید.
- PYTHONLEGACYWINDOWSSTDIO¶
اگر روی رشتهای غیرخالی تنظیم شود، از خواننده و نویسندهی جدید کنسول استفاده نمیشود. این بدان معناست که نویسههای یونیکد بر اساس صفحهی کد فعال کنسول کدگذاری میشوند، نه با استفاده از utf-8.
اگر جریانهای استاندارد بهجای ارجاع به بافرهای کنسول، به پروندهها یا پایپها بازهدایت شده باشند، این متغیر نادیده گرفته میشود.
دسترسپذیری: Windows.
اضافه شده در نسخهی 3.6.
- PYTHONCOERCECLOCALE¶
اگر روی مقدار
0تنظیم شود، باعث میشود برنامه اصلی خط فرمان پایتون از تبدیل اجباری localeهای قدیمی C و POSIX مبتنی بر اسکی به جایگزین توانمندتری مبتنی بر UTF-8 صرفنظر کند.اگر این متغیر تنظیم نشده باشد (یا روی مقداری غیر از
0تنظیم شده باشد)، متغیر محیطی بازنویسی locale با نامLC_ALLنیز تنظیم نشده باشد، و locale فعلی گزارششده برای دستهیLC_CTYPEیا locale پیشفرضCباشد یا localePOSIXکه صریحاً مبتنی بر اسکی است، آنگاه رابط خط فرمان پایتون پیش از بارگذاری رانتایم مفسر تلاش میکند localeهای زیر را به ترتیب فهرستشده برای دستهیLC_CTYPEپیکربندی کند:C.UTF-8C.utf8UTF-8
اگر تنظیم یکی از این دستههای locale با موفقیت انجام شود، متغیر محیطی
LC_CTYPEنیز پیش از مقداردهی اولیهی رانتایم پایتون، بهطور متناسب در محیط فرایند فعلی تنظیم خواهد شد. این تضمین میکند که تنظیم بهروزرسانیشده، علاوه بر اینکه توسط خودِ مفسر و دیگر کامپوننتهای آگاه از locale که در همان فرایند اجرا میشوند (مانند کتابخانهی GNUreadline) دیده میشود، در زیرفرایندها (صرفنظر از اینکه آن فرایندها در حال اجرای مفسر پایتون هستند یا خیر) و همچنین در عملیاتی که بهجای locale فعلی C از محیط استعلام میکنند (مانند تابعlocale.getdefaultlocale()خودِ پایتون) نیز دیده خواهد شد.پیکربندی یکی از این localeها (چه بهطور صریح و چه از طریق تبدیل ضمنی locale ذکرشده در بالا) بهطور خودکار هندلر خطای
surrogateescapeرا برایsys.stdinوsys.stdoutفعال میکند (sys.stderrمانند هر locale دیگری همچنان ازbackslashreplaceاستفاده میکند). این رفتار مدیریت جریان را میتوان، همانطور که معمول است، با استفاده ازPYTHONIOENCODINGبازنویسی کرد.برای مقاصد اشکالزدایی، تنظیم
PYTHONCOERCECLOCALE=warnباعث میشود پایتون در صورتی که اجبار locale فعال شود، یا در صورتی که localeای که باید موجب اجبار میشد، هنوز هنگام راهاندازی رانتایم پایتون فعال باشد، پیامهای هشدار را درstderrمنتشر کند.همچنین توجه داشته باشید که حتی وقتی تغییر اجباری locale (locale coercion) غیرفعال باشد، یا وقتی نتواند locale هدف مناسبی بیابد،
PYTHONUTF8همچنان بهصورت پیشفرض در localeهای قدیمی مبتنی بر اسکی فعال میشود. برای وادار کردن مفسر به استفاده ازASCIIبهجایUTF-8در رابطهای سیستمی، باید هر دو ویژگی غیرفعال شوند.دسترسپذیری: Unix.
اضافه شده در نسخهی 3.7: برای جزئیات بیشتر به PEP 538 مراجعه کنید.
- PYTHONDEVMODE¶
اگر این متغیر محیطی به یک رشتهی غیرخالی تنظیم شود، حالت توسعه پایتون فعال میشود که بررسیهای اضافی زمان اجرا را معرفی میکند؛ بررسیهایی که به دلیل پرهزینه بودن، بهطور پیشفرض فعال نمیشوند. این کار معادل تنظیم گزینهی
-Xdevاست.اضافه شده در نسخهی 3.7.
- PYTHONUTF8¶
اگر روی
1تنظیم شود، حالت UTF-8 پایتون را فعال میکند.اگر روی
0تنظیم شود، حالت UTF-8 پایتون غیرفعال میشود.تنظیم هر رشتهی غیرخالی دیگر، باعث بروز خطا در حین راهاندازی مفسر میشود.
اضافه شده در نسخهی 3.7.
- PYTHONWARNDEFAULTENCODING¶
اگر این متغیر محیطی به یک رشتهی غیرخالی تنظیم شده باشد، هنگامی که کدگذاری پیشفرض مخصوص locale استفاده میشود،
EncodingWarningصادر میشود.برای جزئیات به فعالسازی اختیاری هشدار کدگذاری (EncodingWarning) مراجعه کنید.
اضافه شده در نسخهی 3.10.
- PYTHONNODEBUGRANGES¶
اگر این متغیر تنظیم شده باشد، گنجاندن جدولهایی را غیرفعال میکند که اطلاعات مکان اضافی (سطر پایانی، آفست ستون آغازین و آفست ستون پایانی) را به هر دستورالعمل در اشیاء کد نگاشت میکنند. این مورد زمانی مفید است که اشیاء کد و پروندههای pyc کوچکتر مطلوب باشند، و همچنین برای سرکوب نشانگرهای بصری مکان اضافی هنگامی که مفسر ردگیریها را نمایش میدهد.
اضافه شده در نسخهی 3.11.
- PYTHONPERFSUPPORT¶
اگر این متغیر به مقدار ناصفر تنظیم شود، پشتیبانی از پروفایلگیر
perfلینوکس را فعال میکند تا فراخوانیهای پایتون بتوانند توسط آن تشخیص داده شوند.اگر روی
0تنظیم شود، پشتیبانی از پروفایلگیرperfلینوکس را غیرفعال میکند.همچنین گزینهی خط فرمان
-X perfو پشتیبانی پایتون از پروفایلگیر perf لینوکس را ببینید.اضافه شده در نسخهی 3.12.
- PYTHON_PERF_JIT_SUPPORT¶
اگر این متغیر روی مقدار ناصفر تنظیم شود، پشتیبانی از پروفایلگیر
perfلینوکس فعال میشود تا فراخوانیهای پایتون بتوانند با استفاده از اطلاعات DWARF توسط آن تشخیص داده شوند.اگر روی
0تنظیم شود، پشتیبانی از پروفایلگیرperfلینوکس را غیرفعال میکند.همچنین گزینهی خط فرمان
-X perf_jitو پشتیبانی پایتون از پروفایلگیر perf لینوکس را ببینید.اضافه شده در نسخهی 3.13.
- PYTHON_DISABLE_REMOTE_DEBUG¶
اگر این متغیر به رشتهای غیرخالی تنظیم شده باشد، قابلیت اشکالزدایی از راه دورِ توصیفشده در PEP 768 را غیرفعال میکند. این شامل هر دو کارکرد زمانبندی کد برای اجرا در فرایندی دیگر و کارکرد دریافت کد برای اجرا در فرایند جاری است.
همچنین گزینهی خط فرمان
-X disable_remote_debugرا ببینید.اضافه شده در نسخهی 3.14.
- PYTHON_CPU_COUNT¶
اگر این متغیر روی یک عدد صحیح مثبت تنظیمشده باشد، مقادیر بازگشتی
os.cpu_count()وos.process_cpu_count()را بازنویسی میکند.همچنین گزینهی خط فرمان
-X cpu_countرا ببینید.اضافه شده در نسخهی 3.13.
- PYTHON_FROZEN_MODULES¶
اگر این متغیر روی
onیاoffتنظیم شده باشد، تعیین میکند که آیا ماژولهای فریزشده توسط سازوکار ایمپورت نادیده گرفته شوند یا خیر. مقدارonبه این معنی است که آنها ایمپورت میشوند وoffبه این معنی است که نادیده گرفته میشوند. مقدار پیشفرض برای ساختهای غیردیباگ (حالت معمول)onو برای ساختهای دیباگoffاست. توجه داشته باشید که ماژولهای فریزشدهimportlib_bootstrapوimportlib_bootstrap_externalهمیشه استفاده میشوند، حتی اگر این پرچم رویoffتنظیم شده باشد.همچنین گزینهی خط فرمان
-X frozen_modulesرا ببینید.اضافه شده در نسخهی 3.13.
- PYTHON_COLORS¶
اگر این متغیر روی
1تنظیم شود، مفسر انواع مختلفی از خروجی را رنگآمیزی میکند. تنظیم آن روی0این رفتار را غیرفعال میکند. همچنین ببینید کنترل رنگ.اضافه شده در نسخهی 3.13.
- PYTHON_BASIC_REPL¶
اگر این متغیر به هر مقداری تنظیم شده باشد، مفسر تلاش نخواهد کرد REPL مبتنی بر پایتون را که به
readlineنیاز دارد بارگذاری کند، و در عوض از REPL سنتی مبتنی بر پارسر استفاده خواهد کرد.اضافه شده در نسخهی 3.13.
- PYTHON_HISTORY¶
از این متغیر محیطی میتوان برای تعیین مکان پرونده
.python_historyاستفاده کرد (بهطور پیشفرض، این پرونده.python_historyدر پوشه خانگی کاربر است).اضافه شده در نسخهی 3.13.
- PYTHON_GIL¶
اگر این متغیر روی
1تنظیم شود، قفل مفسر سراسری (GIL) بهاجبار فعال خواهد شد. تنظیم آن روی0قفل مفسر سراسری را بهاجبار غیرفعال میکند (نیازمند آن است که پایتون با گزینهی ساخت--disable-gilپیکربندیشده باشد).همچنین گزینهی خط فرمان
-X gilرا ببینید که نسبت به این متغیر اولویت دارد، و سیپایتون نخآزاد.اضافه شده در نسخهی 3.13.
- PYTHON_THREAD_INHERIT_CONTEXT¶
اگر این متغیر روی
1تنظیم شده باشد،Threadبهطور پیشفرض هنگام شروع، از رونوشتی از زمینهی فراخوانندهیThread.start()استفاده خواهد کرد. در غیر این صورت، نخهای جدید با زمینهی خالی شروع خواهند شد. اگر این متغیر تنظیم نشده باشد، مقدار پیشفرض آن در ساختهای نخآزاد1و در غیر این صورت0خواهد بود. همچنین گزینهی-X thread_inherit_contextرا ببینید.اضافه شده در نسخهی 3.14.
- PYTHON_CONTEXT_AWARE_WARNINGS¶
اگر روی
1تنظیم شده باشد، مدیر زمینهیwarnings.catch_warningsبرای ذخیرهسازی وضعیت فیلتر هشدارها از یکContextVarاستفاده خواهد کرد. اگر تنظیم نشده باشد، مقدار پیشفرض این متغیر در ساختهای نخآزاد1و در غیر این صورت0است. به-X context_aware_warningsمراجعه کنید.اضافه شده در نسخهی 3.14.
- PYTHON_JIT¶
در ساختهایی (builds) که کامپایل در لحظه (JIT) بهصورت آزمایشی در دسترس است، این متغیر میتواند JIT را هنگام راهاندازی مفسر بهاجبار غیرفعال (
0) یا فعال (1) کند.اضافه شده در نسخهی 3.13.
- PYTHON_TLBC¶
اگر روی
1تنظیم شود، بایتکد نخمحلی فعال میشود. اگر روی0تنظیم شود، بایتکد نخمحلی و مفسر ویژهساز (specializing interpreter) غیرفعال میشوند. تنها در ساختهایی که با--disable-gilپیکربندی شدهاند اعمال میشود.همچنین گزینهی خط فرمان
-X tlbcرا ببینید.اضافه شده در نسخهی 3.14.
1.2.1. متغیرهای حالت اشکالزدایی¶
- PYTHONDUMPREFS¶
در صورت تنظیم، پایتون پس از خاموش کردن مفسر، اشیاء و شمارش ارجاعِ همچنان زنده را برونریزی میکند.
نیازمند پایتونی است که با گزینهی ساخت
--with-trace-refsپیکربندیشده باشد.
- PYTHONDUMPREFSFILE¶
اگر تنظیم شده باشد، پایتون اشیاء و شمارش ارجاعهایی را که پس از خاموش شدن مفسر هنوز زندهاند، در پروندهای در مسیری که به عنوان مقدار این متغیر محیطی مشخص شده است، برونریزی میکند.
نیازمند پایتونی است که با گزینهی ساخت
--with-trace-refsپیکربندیشده باشد.اضافه شده در نسخهی 3.11.
- PYTHON_PRESITE¶
اگر این متغیر به یک ماژول تنظیم شده باشد، آن ماژول در اوایل چرخه حیات مفسر ایمپورت میشود؛ پیش از آنکه ماژول
siteاجرا شود و پیش از آنکه ماژول__main__ایجاد شود. بنابراین، ماژول ایمپورتشده به عنوان__main__در نظر گرفته نمیشود.از این میتوان برای اجرای کد در مراحل اولیهی راهاندازی پایتون استفاده کرد.
برای ایمپورت کردن یک زیرماژول، مانند دستور ایمپورت، از
package.moduleبهعنوان مقدار استفاده کنید.همچنین گزینهی خط فرمان
-X presiteرا ببینید که بر این متغیر اولویت دارد.نیازمند پایتونی است که با گزینهی ساخت
--with-pydebugپیکربندیشده باشد.اضافه شده در نسخهی 3.13.