GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • فهرست مطالب
  • 3. پیکربندی پایتون
  • 2. استفاده از پایتون در پلتفرم‌های یونیکس
  • 4. استفاده از پایتون در ویندوز
  • گزارش یک اشکال
  • بهبود این صفحه
  • نمایش منبع
  • نمایش منبع ترجمه
  • اندیس
  • ماژول‌ها
  • Python
  • 3.15.2 documentation
  • راه‌اندازی و استفاده از پایتون

This view

  • Original page
  • New address

GeezerVison is showing python.github.io — 3. پیکربندی پایتون

3. پیکربندی پایتون¶

3.1. نیازمندی‌های ساخت¶

برای ساخت سی‌پایتون، به موارد زیر نیاز خواهید داشت:

  • یک کامپایلر C11. ویژگی‌های اختیاری C11 الزامی نیستند.

  • در ویندوز، Microsoft Visual Studio 2017 یا نسخه‌های جدیدتر آن لازم است.

  • پشتیبانی از اعداد ممیز شناور IEEE 754 و عدد نیست ممیز شناور (NaN).

  • پشتیبانی از نخ‌ها.

تغییر یافته در نسخه‌ی 3.5: در ویندوز، اکنون Visual Studio 2015 یا نسخه‌های بعدی آن لازم است.

تغییر یافته در نسخه‌ی 3.6: ویژگی‌های منتخب C99، مانند <stdint.h> و توابع static inline، اکنون الزامی هستند.

تغییر یافته در نسخه‌ی 3.7: پشتیبانی از نخ اکنون الزامی است.

تغییر یافته در نسخه‌ی 3.11: کامپایلر C11، پشتیبانی از IEEE 754 و NaN اکنون الزامی است. در ویندوز، Visual Studio 2017 یا جدیدتر لازم است.

همچنین PEP 7 "Style Guide for C Code" و PEP 11 "CPython platform support" را ببینید.

3.1.1. نیازمندی‌های ماژول‌های اختیاری¶

برخی از ماژول‌های اختیاری کتابخانه استاندارد به کتابخانه‌های شخص ثالث نیاز دارند که برای توسعه نصب شده باشند (برای مثال، باید پرونده‌های سرآیند در دسترس باشند).

نیازمندی‌های مفقود در خروجی configure گزارش می‌شوند. ماژول‌هایی که به دلیل وابستگی‌های مفقود وجود ندارند، نزدیک به انتهای خروجی make فهرست می‌شوند و گاهی با استفاده از نامی داخلی، برای مثال _ctypes برای ماژول ctypes.

اگر مفسر سی‌پایتون را بدون ماژول‌های اختیاری توزیع می‌کنید، بهترین روش این است که کاربران را آگاه کنید، زیرا آن‌ها معمولاً انتظار دارند ماژول‌های کتابخانه استاندارد در دسترس باشند.

وابستگی‌های ساخت ماژول‌های اختیاری عبارت‌اند از:

وابستگی

حداقل نسخه

ماژول پایتون

libbz2

bz2

libffi

3.3.0 توصیه‌شده

ctypes

liblzma

lzma

libmpdec

2.5.0

decimal [1]

libreadline یا libedit [2]

readline

libuuid

_uuid [3]

ncurses [4]

curses

OpenSSL

[6]

ssl, hashlib [5]

SQLite

3.15.2

sqlite3

Tcl/Tk

8.5.12

tkinter, IDLE, turtle

zlib

1.2.2.1

zlib, gzip, ensurepip

zstd

1.4.5

compression.zstd

[1]

اگر libmpdec در دسترس نباشد، ماژول decimal از یک پیاده‌سازی خالص پایتونی استفاده خواهد کرد. برای جزئیات به --with-system-libmpdec مراجعه کنید.

[2]

برای انتخاب بک‌اند ماژول readline، به --with-readline مراجعه کنید.

[3]

ماژول uuid از _uuid برای تولید UUIDهای «امن» استفاده می‌کند. برای جزئیات، به مستندات ماژول مراجعه کنید.

[4]

ماژول curses به کتابخانه‌ی libncurses یا libncursesw نیاز دارد. ماژول curses.panel به‌علاوه به کتابخانه‌ی libpanel یا libpanelw نیاز دارد.

[5]

اگر OpenSSL در دسترس نباشد، ماژول hashlib از پیاده‌سازی‌های همراه برای چندین تابع هش استفاده خواهد کرد. برای اجبار به استفاده از OpenSSL، به --with-builtin-hashlib-hashes مراجعه کنید.

[6]

OpenSSL 1.1.1 حداقل نسخهی ممکن برای ساخت بر مبنای آن است، اما این سری به پایان عمر خود رسیده و دیگر وصلههای امنیتی عمومی دریافت نمیکند. از آخرین نسخهی وصل یکی از سریهای LTS که هماکنون پشتیبانی میشوند استفاده کنید (نقشهی راه OpenSSL را ببینید)، یا در صورت موجود بودن از بستهی ارائهشده توسط سیستمعامل خود استفاده کنید. سایر کتابخانههایی که API سازگار با OpenSSL 1.1.1 یا جدیدتر ارائه میدهند ممکن است کار کنند، اما بهصورت رسمی پشتیبانی نمیشوند.

توجه داشته باشید که این جدول شامل تمام ماژول‌های اختیاری نیست؛ به‌طور خاص، ماژول‌های مخصوص پلتفرم مانند winreg در اینجا فهرست نشده‌اند.

همچنین ببینید

  • راهنمای توسعه (devguide) شامل فهرست کاملی از وابستگی‌های مورد نیاز برای ساخت تمام ماژول‌ها و دستورالعمل‌هایی درباره نحوه نصب آن‌ها در پلتفرم‌های رایج است.

  • --with-system-expat امکان ساخت با یک کتابخانه‌ی خارجی libexpat را فراهم می‌کند.

  • گزینه‌ها برای وابستگی‌های شخص ثالث

تغییر یافته در نسخه‌ی 3.1: نسخه‌ی 8.3.1 از Tcl/Tk اکنون برای tkinter لازم است.

تغییر یافته در نسخه‌ی 3.5: اکنون نسخه‌ی 8.4 از Tcl/Tk برای tkinter لازم است.

تغییر یافته در نسخه‌ی 3.7: OpenSSL 1.0.2 اکنون برای hashlib و ssl الزامی است.

تغییر یافته در نسخه‌ی 3.10: اکنون hashlib و ssl به OpenSSL 1.1.1 نیاز دارند. اکنون sqlite3 به SQLite 3.7.15 نیاز دارد.

تغییر یافته در نسخه‌ی 3.11: نسخه‌ی 8.5.12 از Tcl/Tk اکنون برای tkinter لازم است.

تغییر یافته در نسخه‌ی 3.13: اکنون SQLite 3.15.2 برای sqlite3 لازم است.

3.2. پرونده‌های تولیدشده¶

برای کاهش وابستگی‌های ساخت، کد منبع پایتون شامل چندین پرونده‌ی تولیدشده است. دستورهایی برای بازتولید همه‌ی پرونده‌های تولیدشده:

make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure

پرونده Makefile.pre.in پرونده‌های تولیدشده، ورودی‌های آن‌ها و ابزارهای مورد استفاده برای بازتولید آن‌ها را مستندسازی می‌کند. اهداف regen-* در make را جست‌وجو کنید.

3.2.1. اسکریپت پیکربندی¶

فرمان make regen-configure پرونده‌ی aclocal.m4 و اسکریپت configure را با استفاده از اسکریپت پوسته‌ی Tools/build/regen-configure.sh بازتولید می‌کند که از یک کانتینر اوبونتو برای به دست آوردن همان نسخه‌های ابزارها و داشتن خروجی تکرار‌پذیر استفاده می‌کند.

استفاده از کانتینر اختیاری است؛ دستور زیر را می‌توان به‌صورت محلی اجرا کرد:

autoreconf -ivf -Werror

پرونده‌های تولیدشده ممکن است بسته به نسخه‌های دقیق ابزارهای استفاده‌شده تغییر کنند. کانتینری که سی‌پایتون از آن استفاده می‌کند، دارای Autoconf نسخه‌ی 2.72، aclocal از Automake نسخه‌ی 1.16.5 و pkg-config نسخه‌ی 1.8.1 است.

تغییر یافته در نسخه‌ی 3.13: Autoconf 2.71 و aclocal 1.16.5 اکنون برای بازتولید configure استفاده می‌شوند.

تغییر یافته در نسخه‌ی 3.14: اکنون از Autoconf 2.72 برای بازتولید configure استفاده می‌شود.

3.3. گزینه‌های پیکربندی¶

برای فهرست کردن همه‌ی گزینه‌های اسکریپت configure از این استفاده کنید:

./configure --help

همچنین Misc/SpecialBuilds.txt را در توزیع کد منبع پایتون ببینید.

3.3.1. گزینه‌های عمومی¶

--enable-loadable-sqlite-extensions¶

پشتیبانی از افزونه‌های قابل بارگذاری در ماژول توسعه‌ای _sqlite (پیش‌فرض: خیر) از ماژول sqlite3.

به متد sqlite3.Connection.enable_load_extension() از ماژول sqlite3 مراجعه کنید.

اضافه شده در نسخه‌ی 3.6.

--disable-ipv6¶

غیرفعال کردن پشتیبانی از IPv6 (در صورت پشتیبانی، به‌صورت پیش‌فرض فعال است)؛ به ماژول socket مراجعه کنید.

--enable-big-digits=[15|30]¶

اندازه‌ی رقم‌های int پایتون را بر حسب بیت تعریف می‌کند: ۱۵ یا ۳۰ بیت.

به‌طور پیش‌فرض، اندازه رقم ۳۰ است.

کلان‌دستور PYLONG_BITS_IN_DIGIT را روی 15 یا 30 تعریف کنید.

به sys.int_info.bits_per_digit مراجعه کنید.

--with-suffix=SUFFIX¶

پسوند پرونده اجرایی پایتون را به SUFFIX تنظیم می‌کند.

پسوند پیش‌فرض در ویندوز و macOS .exe است (پرونده اجرایی python.exe)، در Emscripten node .js، در Emscripten browser .html، در WASI .wasm و در سایر پلتفرم‌ها رشته‌ی خالی است (پرونده اجرایی python).

تغییر یافته در نسخه‌ی 3.11: پسوند پیش‌فرض در پلتفرم WASM یکی از .js، .html یا .wasm است.

--with-tzpath=<list of absolute paths separated by pathsep>¶

مسیر جستجوی پیش‌فرض منطقه‌ی زمانی برای zoneinfo.TZPATH را انتخاب می‌کند. به پیکربندی زمان کامپایل ماژول zoneinfo مراجعه کنید.

پیش‌فرض: /usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo.

جداکننده مسیر os.pathsep را ببینید.

اضافه شده در نسخه‌ی 3.9.

--without-decimal-contextvar¶

ماژول توسعه‌ای _decimal را با استفاده از زمینه‌ی نخ‌محلی به‌جای زمینه‌ی هم‌روال‌محلی (پیش‌فرض) بسازید؛ به ماژول decimal مراجعه کنید.

به decimal.HAVE_CONTEXTVAR و ماژول contextvars مراجعه کنید.

اضافه شده در نسخه‌ی 3.9.

--with-dbmliborder=<list of backend names>¶

بازنویسی ترتیب بررسی بک‌اندهای پایگاه داده برای ماژول dbm

مقدار معتبر، رشته‌ای است که نام‌های بک‌اند در آن با دونقطه (:) از هم جدا شده‌اند:

  • ndbm;

  • gdbm;

  • bdb.

--without-c-locale-coercion¶

غیرفعال کردن اجبار C locale به یک locale مبتنی بر UTF-8 (به‌طور پیش‌فرض فعال است).

ماکروی PY_COERCE_C_LOCALE را تعریف نکنید.

PYTHONCOERCECLOCALE و PEP 538 را ببینید.

--with-platlibdir=DIRNAME¶

نام پوشه کتابخانه پایتون (پیش‌فرض lib است).

Fedora و SuSE در پلتفرم‌های ۶۴ بیتی از lib64 استفاده می‌کنند.

به sys.platlibdir مراجعه کنید.

اضافه شده در نسخه‌ی 3.9.

--with-wheel-pkg-dir=PATH¶

پوشه‌ی بسته‌های wheel مورد استفاده‌ی ماژول ensurepip (به‌طور پیش‌فرض هیچ‌کدام).

برخی از سیاست‌های بسته‌بندی توزیع‌های لینوکس توصیه می‌کنند که وابستگی‌ها همراه بسته نشوند. برای مثال، فدورا بسته‌های wheel را در پوشه‌ی /usr/share/python-wheels/ نصب می‌کند و بسته‌ی ensurepip._bundled را نصب نمی‌کند.

اضافه شده در نسخه‌ی 3.10.

--with-pkg-config=[check|yes|no]¶

اینکه آیا configure باید از pkg-config برای تشخیص وابستگی‌های ساخت استفاده کند یا خیر.

  • check (پیش‌فرض): pkg-config اختیاری است

  • yes: pkg-config الزامی است

  • no: configure حتی وقتی pkg-config موجود باشد، از آن استفاده نمی‌کند

اضافه شده در نسخه‌ی 3.11.

--with-missing-stdlib-config=FILE¶

مسیر یک پرونده‌ی پیکربندی JSON که حاوی پیام‌های خطای سفارشی برای ماژول‌های مفقود کتابخانه‌ی استاندارد است.

این گزینه‌ی برای توزیع‌کنندگان پایتون در نظر گرفته شده است که می‌خواهند هنگامی که کاربران با ماژول‌های کتابخانه‌ی استاندارد که مفقود شده‌اند یا به‌طور جداگانه بسته‌بندی شده‌اند مواجه می‌شوند، راهنمایی‌های مختصِ آن توزیع را ارائه دهند.

پرونده‌ی JSON باید نام ماژول‌های مفقود را به رشته‌های پیام خطای سفارشی نگاشت کند. برای مثال، اگر توزیع شما بسته‌های tkinter و _tkinter را به‌طور جداگانه بسته‌بندی کند و به دلایل قانونی _gdbm را کنار بگذارد، پیکربندی می‌تواند شامل موارد زیر باشد:

{
    "_gdbm": "The '_gdbm' module is not available in this distribution",
    "tkinter": "Install the python-tk package to use tkinter",
    "_tkinter": "Install the python-tk package to use tkinter",
}

اضافه شده در نسخه‌ی 3.15.

--enable-pystats¶

فعال کردن گردآوری آمار کارایی داخلی پایتون.

به‌طور پیش‌فرض، گردآوری آمار خاموش است. برای روشن کردن گردآوری آمار در زمان راه‌اندازی پایتون، از دستور python3 -X pystats استفاده کنید یا متغیر محیطی PYTHONSTATS=1 را تنظیم کنید.

هنگام خروج پایتون، اگر گردآوری آمار فعال بوده و پاک‌سازی نشده باشد، آمار برون‌ریزی می‌شود.

اثرات:

  • افزودن گزینه خط فرمان -X pystats.

  • افزودن متغیر محیطی PYTHONSTATS.

  • ماکرو Py_STATS را تعریف کنید.

  • افزودن توابع به ماژول sys:

    • sys._stats_on(): گردآوری آمار را فعال می‌کند.

    • sys._stats_off(): گردآوری آمار را غیرفعال می‌کند.

    • sys._stats_clear(): آمار را پاک می‌کند.

    • sys._stats_dump(): آمار را به پرونده برون‌ریزی می‌کند و آن را پاک می‌کند.

آمار به یک پرونده‌ی دلخواه (احتمالاً یکتا) در /tmp/py_stats/ (یونیکس) یا C:\temp\py_stats\ (ویندوز) برون‌ریزی می‌شود. اگر آن پوشه وجود نداشته باشد، نتایج روی stderr چاپ خواهند شد.

برای خواندن آمار از Tools/scripts/summarize_stats.py استفاده کنید.

آمار:

  • آپ‌کد:

    • تخصصی‌سازی: موفقیت، شکست، برخورد، معوق، عدم‌برخورد (miss)، بهینه‌سازی‌زدایی (deopt)، شکست‌ها؛

    • تعداد اجرا؛

    • تعداد جفت‌ها.

  • فراخوانی:

    • فراخوانی‌های درون‌خطی (inlined) پایتون؛

    • فراخوانی‌های PyEval؛

    • فریم‌ها هل داده می‌شوند؛

    • شیء فریم ایجاد شد؛

    • فراخوانی‌های ارزیابی (Eval): برداری (vector)، تولیدگر، قدیمی، تابع VECTORCALL، ساخت کلاس، جایگاه، تابع "ex"، API، متد.

  • شیء:

    • incref و decref؛

    • افزایش و کاهش شمارش ارجاع مفسر (incref و decref)؛

    • تخصیص‌ها: همه، ۵۱۲ بایت، ۴ کیبی‌بایت، بزرگ؛

    • آزاد؛

    • به/از فهرست‌های آزاد؛

    • دیکشنری مادی‌شده/نامادی‌شده؛

    • نهانگاه نوع؛

    • تلاش‌های بهینه‌سازی؛

    • ایجاد/اجرای ردگیری‌های بهینه‌سازی؛

    • ریزعملیات‌های اجرا‌شده (uops).

  • زباله‌روب:

    • زباله‌روبی‌ها؛

    • اشیاء بازدید‌شده؛

    • اشیاء جمع‌آوری شدند.

اضافه شده در نسخه‌ی 3.11.

--disable-gil¶

پشتیبانی از اجرای پایتون بدون قفل مفسر سراسری (GIL) را فعال می‌کند: ساخت‌ نخ‌آزاد.

ماکروی Py_GIL_DISABLED را تعریف می‌کند و "t" را به sys.abiflags اضافه می‌کند.

برای جزئیات بیشتر به سی‌پایتون نخ‌آزاد مراجعه کنید.

اضافه شده در نسخه‌ی 3.13.

--enable-experimental-jit=[no|yes|yes-off|interpreter]¶

نشان دهید که چگونه کامپایلر در لحظه (JIT) آزمایشی را ادغام کنید.

  • no: کامپایلر در لحظه ساخته نمی‌شود.

  • yes: JIT را فعال می‌کند. برای غیرفعال کردن آن در زمان اجرا، متغیر محیطی PYTHON_JIT=0 را تنظیم کنید.

  • yes-off: JIT ساخته می‌شود، اما به‌طور پیش‌فرض غیرفعال است. برای فعال‌سازی آن در زمان اجرا، متغیر محیطی PYTHON_JIT=1 را تنظیم کنید.

  • interpreter: فعال کردن «مفسر JIT» (فقط برای کسانی که خودِ JIT را اشکال‌زدایی می‌کنند مفید است). برای غیرفعال کردن آن در زمان اجرا، متغیر محیطی PYTHON_JIT=0 را تنظیم کنید.

اگر این گزینه ارائه نشود، --enable-experimental-jit=no رفتار پیش‌فرض است و --enable-experimental-jit شکل مختصر --enable-experimental-jit=yes است. برای اطلاعات بیشتر، از جمله نحوه‌ی نصب وابستگی‌های لازم زمان ساخت، Tools/jit/README.md را ببینید.

نکته

هنگام ساخت سی‌پایتون با JIT فعال، مطمئن شوید که پایتون 3.11 یا نسخه‌های جدیدتر آن روی سیستم شما نصب شده است.

اضافه شده در نسخه‌ی 3.13.

PKG_CONFIG¶

مسیر ابزار pkg-config.

PKG_CONFIG_LIBDIR¶
PKG_CONFIG_PATH¶

گزینه‌های pkg-config.

--disable-epoll¶

ساخت بدون epoll، به این معنا که تابع select.epoll() حتی اگر سیستم یک تابع epoll_create را فراهم کند، حضور نخواهد داشت. این ممکن است روی سیستم‌هایی استفاده شود که در آن‌ها epoll_create یا epoll_create1 موجود است اما با معناشناسی لینوکس سازگار نیست.

اضافه شده در نسخه‌ی 3.15.

3.3.2. گزینه‌های کامپایلر C¶

CC¶

فرمان کامپایلر C.

CFLAGS¶

پرچم‌های کامپایلر C.

CPP¶

فرمان پیش‌پردازنده‌ی C.

CPPFLAGS¶

پرچم‌های پیش‌پردازنده C، مثلاً -Iinclude_dir.

3.3.3. گزینه‌های پیونددهنده¶

LDFLAGS¶

پرچم‌های پیونددهنده، برای مثال -Llibrary_directory.

LIBS¶

کتابخانه‌هایی که به پیونددهنده داده می‌شوند، برای مثال -llibrary.

MACHDEP¶

نام پرونده‌های کتابخانه‌ای وابسته به ماشین.

3.3.4. گزینه‌ها برای وابستگی‌های شخص ثالث¶

اضافه شده در نسخه‌ی 3.11.

BZIP2_CFLAGS¶
BZIP2_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای پیوند دادن پایتون با libbz2، که توسط ماژول bz2 استفاده می‌شوند و pkg-config را نادیده می‌گیرند.

CURSES_CFLAGS¶
CURSES_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libncurses یا libncursesw، که توسط ماژول curses استفاده می‌شوند و pkg-config را نادیده می‌گیرند.

GDBM_CFLAGS¶
GDBM_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای gdbm.

LIBEDIT_CFLAGS¶
LIBEDIT_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libedit، که ماژول readline از آن استفاده می‌کند؛ این پرچم‌ها بر pkg-config اولویت دارند.

LIBFFI_CFLAGS¶
LIBFFI_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libffi که ماژول ctypes از آن استفاده می‌کند، و pkg-config را نادیده می‌گیرند.

LIBMPDEC_CFLAGS¶
LIBMPDEC_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libmpdec، که توسط ماژول decimal استفاده می‌شود و pkg-config را نادیده می‌گیرد.

نکته

این متغیرهای محیطی هیچ تأثیری ندارند، مگر اینکه --with-system-libmpdec مشخص شود.

LIBLZMA_CFLAGS¶
LIBLZMA_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای liblzma، که توسط ماژول lzma استفاده می‌شوند و به‌جای pkg-config به کار می‌روند.

LIBREADLINE_CFLAGS¶
LIBREADLINE_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libreadline، که توسط ماژول readline استفاده می‌شوند و بر pkg-config غلبه می‌کنند.

LIBSQLITE3_CFLAGS¶
LIBSQLITE3_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libsqlite3، که توسط ماژول sqlite3 استفاده می‌شود و pkg-config را نادیده می‌گیرد.

LIBUUID_CFLAGS¶
LIBUUID_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libuuid، که توسط ماژول uuid استفاده می‌شوند و pkg-config را نادیده می‌گیرند.

LIBZSTD_CFLAGS¶
LIBZSTD_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libzstd، که توسط ماژول compression.zstd استفاده می‌شود، pkg-config را نادیده می‌گیرد.

اضافه شده در نسخه‌ی 3.14.

PANEL_CFLAGS¶
PANEL_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای PANEL، که pkg-config را نادیده می‌گیرند.

پرچم‌های کامپایلر C و پیونددهنده برای libpanel یا libpanelw، که توسط ماژول curses.panel استفاده می‌شوند و بر pkg-config اولویت دارند.

TCLTK_CFLAGS¶
TCLTK_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای TCLTK، که pkg-config را نادیده می‌گیرند.

ZLIB_CFLAGS¶
ZLIB_LIBS¶

پرچم‌های کامپایلر C و پیونددهنده برای libzlib، که توسط ماژول gzip استفاده می‌شود و pkg-config را بازنویسی می‌کند.

3.3.5. گزینه‌های WebAssembly¶

--enable-wasm-dynamic-linking¶

فعال کردن پشتیبانی از پیوند‌دهی پویا برای WASM.

پیوندسازی پویا dlopen را ممکن می‌سازد. حجم پرونده اجرایی به دلیل محدود بودن حذف کد مرده و ویژگی‌های اضافی افزایش می‌یابد.

اضافه شده در نسخه‌ی 3.11.

--enable-wasm-pthreads¶

فعال کردن پشتیبانی از pthreads برای WASM.

اضافه شده در نسخه‌ی 3.11.

3.3.6. گزینه‌های نصب¶

--prefix=PREFIX¶

پرونده‌های مستقل از معماری را در PREFIX نصب کنید. در یونیکس، مقدار پیش‌فرض آن /usr/local است.

این مقدار را می‌توان در زمان اجرا با استفاده از sys.prefix بازیابی کرد.

به عنوان مثال، می‌توان از --prefix="$HOME/.local/" برای نصب یک پایتون در پوشه خانگی خود استفاده کرد.

--exec-prefix=EPREFIX¶

پرونده‌های وابسته به معماری را در EPREFIX نصب می‌کند؛ مقدار پیش‌فرض آن --prefix است.

این مقدار را می‌توان در زمان اجرا با استفاده از sys.exec_prefix بازیابی کرد.

--disable-test-modules¶

ماژول‌های آزمون مانند بسته‌ی test یا ماژول توسعه‌ای _testcapi (که به‌صورت پیش‌فرض ساخته و نصب می‌شوند) را نسازید و نصب نکنید.

اضافه شده در نسخه‌ی 3.10.

--with-ensurepip=[upgrade|install|no]¶

فرمان ensurepip را که هنگام نصب پایتون اجرا می‌شود انتخاب کنید:

  • upgrade (پیش‌فرض): اجرای دستور python -m ensurepip --altinstall --upgrade.

  • install: اجرای دستور python -m ensurepip --altinstall؛

  • no: ensurepip اجرا نشود؛

اضافه شده در نسخه‌ی 3.6.

3.3.7. گزینه‌های کارایی¶

پیکربندی پایتون با استفاده از --enable-optimizations --with-lto (PGO + LTO) برای بهترین عملکرد توصیه می‌شود. همچنین می‌توان از پرچم آزمایشی --enable-bolt برای بهبود عملکرد استفاده کرد.

--enable-optimizations¶

فعال‌سازی بهینه‌سازی هدایت‌شده توسط پروفایل (PGO) با استفاده از PROFILE_TASK (به‌طور پیش‌فرض غیرفعال است).

کامپایلر C با نام Clang برای PGO به برنامه‌ی llvm-profdata نیاز دارد. در macOS، GCC نیز به آن نیاز دارد: GCC در macOS تنها یک نام مستعار برای Clang است.

در صورت استفاده از --enable-shared و GCC، میان‌جای‌گذاری معنایی (semantic interposition) را نیز در libpython غیرفعال کنید: -fno-semantic-interposition را به پرچم‌های کامپایلر و پیونددهنده اضافه کنید.

نکته

در حین ساخت، ممکن است با هشدارهایی از سوی کامپایلر مبنی بر اینکه داده‌های پروفایل برای برخی از پرونده‌های منبع در دسترس نیست مواجه شوید. این هشدارها بی‌ضرر هستند، زیرا در طول گردآوری داده‌های پروفایل تنها زیرمجموعه‌ای از کد اجرا می‌شود. برای غیرفعال کردن این هشدارها در Clang، با افزودن -Wno-profile-instr-unprofiled به CFLAGS آن‌ها را به‌صورت دستی سرکوب کنید.

اضافه شده در نسخه‌ی 3.6.

تغییر یافته در نسخه‌ی 3.10: از -fno-semantic-interposition در GCC استفاده کنید.

PROFILE_TASK¶

متغیر محیطی استفاده‌شده در Makefile: آرگومان‌های خط فرمان پایتون برای وظیفه‌ی تولید PGO.

پیش‌فرض: -m test --pgo --timeout=$(TESTTIMEOUT).

اضافه شده در نسخه‌ی 3.8.

تغییر یافته در نسخه‌ی 3.13: شکست وظیفه دیگر به‌صورت بی‌صدا نادیده گرفته نمی‌شود.

--with-lto=[full|thin|no|yes]¶

فعال کردن بهینه‌سازی زمان پیوند (LTO) در هر ساخت (به‌طور پیش‌فرض غیرفعال است).

کامپایلر C یعنی Clang برای LTO نیازمند llvm-ar (در macOS، ar) و همچنین یک پیونددهنده آگاه از LTO (ld.gold یا lld) است.

اضافه شده در نسخه‌ی 3.6.

اضافه شده در نسخه‌ی 3.11: برای بهره‌گیری از ویژگی ThinLTO، در Clang از --with-lto=thin استفاده کنید.

تغییر یافته در نسخه‌ی 3.12: اگر کامپایلر این پرچم را بپذیرد، از ThinLTO به‌عنوان سیاست بهینه‌سازی پیش‌فرض در Clang استفاده کنید.

--enable-bolt¶

فعال‌سازی استفاده از بهینه‌ساز دودویی پس از پیوند BOLT (به‌طور پیش‌فرض غیرفعال است).

BOLT بخشی از پروژه LLVM است، اما همیشه در توزیع‌های دودویی آن‌ها گنجانده نمی‌شود. این پرچم مستلزم آن است که llvm-bolt و merge-fdata دسترس‌پذیر باشند.

BOLT هنوز پروژه‌ای نسبتاً جدید است، بنابراین این پرچم فعلاً باید آزمایشی در نظر گرفته شود. از آنجا که این ابزار روی کد ماشین کار می‌کند، موفقیت آن به ترکیبی از محیط ساخت + سایر آرگومان‌های configure مربوط به بهینه‌سازی + معماری CPU وابسته است و همه ترکیب‌ها پشتیبانی نمی‌شوند. مشخص است که نسخه‌های BOLT پیش از LLVM 16 در برخی سناریوها باعث فروپاشی BOLT می‌شوند. استفاده از LLVM 16 یا جدیدتر برای بهینه‌سازی BOLT به‌شدت توصیه می‌شود.

می‌توان متغیرهای BOLT_INSTRUMENT_FLAGS و BOLT_APPLY_FLAGS در configure را تعریف کرد تا به ترتیب مجموعه‌ی پیش‌فرض آرگومان‌های llvm-bolt برای ابزارگذاری (instrument) و اعمال داده‌های BOLT روی پرونده‌های دودویی را نادیده بگیرند.

اضافه شده در نسخه‌ی 3.12.

BOLT_APPLY_FLAGS¶

آرگومان‌های llvm-bolt هنگام ساخت دودویی بهینه‌شده با BOLT.

اضافه شده در نسخه‌ی 3.12.

BOLT_INSTRUMENT_FLAGS¶

آرگومان‌های llvm-bolt هنگام ابزارگذاری (instrumenting) پرونده‌های دودویی.

اضافه شده در نسخه‌ی 3.12.

--with-computed-gotos¶

فعال کردن گوتوهای محاسبه‌شده (computed goto) در حلقه ارزیابی (به‌طور پیش‌فرض روی کامپایلرهای پشتیبانی‌شده فعال است).

--with-tail-call-interp¶

فعال کردن مفسرهایی که در سی‌پایتون از فراخوانی‌های دمی استفاده می‌کنند. در صورت فعال بودن، فعال‌سازی PGO (--enable-optimizations) به‌شدت توصیه می‌شود. این گزینه به‌طور خاص به کامپایلر C با پشتیبانی مناسب از فراخوانی دمی و قرارداد فراخوانی preserve_none نیاز دارد. برای مثال، Clang 19 و نسخه‌های جدیدتر از این قابلیت پشتیبانی می‌کنند.

اضافه شده در نسخه‌ی 3.14.

--without-frame-pointers¶

غیرفعال کردن اشاره‌گرهای قاب (frame pointer)، که به‌طور پیش‌فرض فعال هستند (به PEP 831 مراجعه کنید).

به‌طور پیش‌فرض، فرایند ساخت پرچم‌هایی را برای تولید اشاره‌گرهای قاب یا زنجیره‌ی پشتی به BASECFLAGS اضافه می‌کند:

  • هنگامی که کامپایلر از آن‌ها پشتیبانی کند، -fno-omit-frame-pointer و/یا -mno-omit-leaf-frame-pointer اضافه می‌شوند.

  • هنگامی که پشتیبانی شود، -marm و/یا -mno-thumb روی معماری ۳۲ بیتی ARM اضافه می‌شوند،

  • روی پلتفرم‌های s390x، در صورت پشتیبانی، -mbackchain به‌جای پرچم‌های اشاره‌گر قاب ذکر شده در بالا اضافه می‌شود.

  • روی پلتفرم‌های ppc64le، از آنجا که رابط دودویی کاربردی (ABI) پاور ایجاب می‌کند که کامپایلرها به‌طور پیش‌فرض زنجیره‌ی پشتی را حفظ کنند، نیازی به پرچم کامپایلر نیست.

اشاره‌گرهای قاب به پروفایل‌گیرها، اشکال‌زداها و ابزارهای ردیابی سیستم (مانند perf، eBPF، dtrace، gdb) امکان می‌دهند تا پشته‌ی فراخوانی C را بدون متادیتای DWARF پیمایش کنند. این پرچم‌ها از طریق sysconfig به برنامه‌های افزودنی C شخص ثالث منتقل می‌شوند. روی کامپایلرهایی که آن‌ها را درک نمی‌کنند، فرایند ساخت به‌طور بی‌صدا از آن‌ها عبور می‌کند.

توزیع‌کنندگان پایین‌دست و توسعه‌دهندگان کتابخانه‌های بومی که با سیستم‌های ساخت سفارشی ساخته شده‌اند باید همان پرچم‌ها را تنظیم کنند تا زنجیره‌ی بازگشایی در تمامی قاب‌های بومی دست‌نخورده باقی بماند.

اضافه شده در نسخه‌ی 3.15.

--without-mimalloc¶

غیرفعال کردن تخصیص‌دهنده‌ی سریع mimalloc (به‌طور پیش‌فرض فعال است).

این گزینه را نمی‌توان همراه با --disable-gil استفاده کرد، زیرا ساخت‌ نخ‌آزاد به mimalloc نیاز دارد.

همچنین متغیر محیطی PYTHONMALLOC را ببینید.

--without-pymalloc¶

غیرفعال کردن تخصیص‌دهنده حافظه‌ی تخصصی پایتون pymalloc (که به‌طور پیش‌فرض فعال است).

همچنین متغیر محیطی PYTHONMALLOC را ببینید.

--with-pymalloc-hugepages¶

فعال‌سازی پشتیبانی از صفحات بزرگ (huge page) برای آرناهای pymalloc (به‌طور پیش‌فرض غیرفعال است). هنگامی که فعال باشد، اندازه‌ی آرنا در پلتفرم‌های ۶۴ بیتی به ۲ مگابایت افزایش می‌یابد و تخصیص آرنا از MAP_HUGETLB (لینوکس) یا MEM_LARGE_PAGES (ویندوز) با جایگزین خودکار به صفحات معمولی استفاده می‌کند.

حتی هنگام کامپایل‌شده با این گزینه، صفحات بزرگ در طول ران‌تایم استفاده نمی‌شوند مگر اینکه متغیر محیطی PYTHON_PYMALLOC_HUGEPAGES روی 1 تنظیم شود. این انتخاب اختیاری لازم است زیرا صفحات بزرگ

  • خطراتی را روی لینوکس به همراه دارند: اگر استخر صفحات بزرگ تخلیه شود، خطاهای صفحه (شامل خطاهای copy-on-write پس از os.fork()) سیگنال SIGBUS را تحویل داده و فرایند را متوقف می‌کنند.

  • روی ویندوز به دسترسی ویژه‌ای نیاز دارند. برای جزئیات، مستندات ویندوز برای صفحات بزرگ را ببینید. اگر دسترسی لازم SeLockMemoryPrivilege توسط کاربر وجود نداشته باشد، پایتون هنگام راه‌اندازی با خطا مواجه خواهد شد.

اسکریپت کانفیگ بررسی می‌کند که آیا پلتفرم از MAP_HUGETLB پشتیبانی می‌کند یا خیر، و در صورت در دسترس نبودن، هشداری صادر می‌کند.

روی ویندوز، از پرچم --pymalloc-hugepages به همراه build.bat استفاده کنید یا ویژگی UsePymallocHugepages در MSBuild را تنظیم کنید.

اضافه شده در نسخه‌ی 3.15.

--without-doc-strings¶

غیرفعال‌سازی رشته‌های مستند ایستا برای کاهش مصرف حافظه (به‌صورت پیش‌فرض فعال است). رشته‌های مستند تعریف‌شده در پایتون تحت تأثیر قرار نمی‌گیرند.

کلان‌دستور WITH_DOC_STRINGS را تعریف نکنید.

WITH_DOC_STRINGS¶

این کلان‌دستور را برای گنجاندن رشته‌های مستندات ایستا در ساخت تعریف کنید. این مورد به طور پیش‌فرض تعریف می‌شود، مگر اینکه از --without-doc-strings استفاده شود.

ماکرو PyDoc_STRVAR() را ببینید.

--enable-profiling¶

فعال‌سازی پروفایل‌گیری کد سطح C با gprof (به‌طور پیش‌فرض غیرفعال است).

--with-strict-overflow¶

پرچم -fstrict-overflow را به پرچم‌های کامپایلر C اضافه کنید (به‌صورت پیش‌فرض، ما به‌جای آن -fno-strict-overflow را اضافه می‌کنیم).

--without-remote-debug¶

پشتیبانی از اشکال‌زدایی از راه دور که در PEP 768 توصیف‌شده است را غیرفعال می‌کند (به‌صورت پیش‌فرض فعال است). با ارائه این پرچم، کدی که به مفسر اجازه می‌دهد اجرای یک پرونده پایتون را در فرایندی جداگانه زمان‌بندی کند (همان‌طور که در PEP 768 توصیف‌شده است)، کامپایل نمی‌شود. این شامل هر دو کارکرد زمان‌بندی کدی که باید اجرا شود و کارکرد دریافت کدی که باید اجرا شود است.

Py_REMOTE_DEBUG¶

این ماکرو به‌طور پیش‌فرض تعریف شده است، مگر اینکه پایتون با --without-remote-debug پیکربندی شده باشد.

توجه داشته باشید که حتی اگر ماکرو تعریف شده باشد، ممکن است اشکال‌زدایی از راه دور دسترس‌پذیر نباشد (برای مثال، روی پلتفرمی نا‌سازگار).

اضافه شده در نسخه‌ی 3.14.

3.3.8. ساخت‌ اشکال‌زدایی پایتون¶

نسخه‌ی اشکال‌زدایی پایتونی است که با گزینه‌ی پیکربندی --with-pydebug ساخته شده است.

اثرات ساخت‌ اشکال‌زدایی:

  • نمایش همه‌ی هشدارها به‌طور پیش‌فرض: فهرست فیلترهای هشدار پیش‌فرض در ماژول warnings خالی است.

  • d را به sys.abiflags اضافه کنید.

  • افزودن تابع sys.gettotalrefcount().

  • افزودن گزینه‌ی خط فرمان -X showrefcount.

  • گزینه‌ی خط فرمان -d و متغیر محیطی PYTHONDEBUG برای اشکال‌زدایی پارسر افزوده شدند.

  • افزودن پشتیبانی از متغیر __lltrace__: فعال‌سازی ردیابی سطح پایین در حلقه ارزیابی بایت‌کد در صورتی که متغیر تعریف شده باشد.

  • برای تشخیص سرریز بافر و سایر خطاهای حافظه، قلاب‌های اشکال‌زدایی روی تخصیص‌دهنده‌های حافظه را نصب کنید.

  • ماکروهای Py_DEBUG و Py_REF_DEBUG را تعریف می‌کند.

  • افزودن بررسی‌های ران‌تایم: کدی که با #ifdef Py_DEBUG و #endif دربرگرفته شده است. فعال کردن ادعاهای assert(...) و _PyObject_ASSERT(...): ماکروی NDEBUG را تنظیم نکنید (همچنین گزینه پیکربندی --with-assertions را ببینید). بررسی‌های اصلی ران‌تایم:

    • بررسی‌های درستی (sanity check) را بر روی آرگومان‌های تابع اضافه کنید.

    • شیءهای یونیکد و int به‌گونه‌ای ساخته می‌شوند که حافظه‌شان با یک الگو پر شده باشد تا استفاده از شیءهای مقداردهی‌نشده تشخیص داده شود.

    • مطمئن شوید که توابعی که می‌توانند استثنای فعلی را پاک کنند یا جایگزین کنند، در حالی که استثنایی برخاسته (raise) است، فراخوانی نمی‌شوند.

    • بررسی کنید که توابع آزادساز حافظه استثنای فعلی را تغییر ندهند.

    • زباله‌روب (تابع gc.collect()) برخی بررسی‌های پایه روی سازگاری اشیاء انجام می‌دهد.

    • ماکروی Py_SAFE_DOWNCAST() هنگام تبدیل نوع به پایین (downcasting) از نوع‌های پهن به نوع‌های باریک، زیرریز و سرریز عدد صحیح را بررسی می‌کند.

همچنین حالت توسعه پایتون و گزینه‌ی پیکربندی --with-trace-refs را ببینید.

تغییر یافته در نسخه‌ی 3.8: ساخت‌های نهایی اکنون از نظر ABI با ساخت‌های دیباگ سازگار هستند: تعریف ماکروی Py_DEBUG دیگر مستلزم ماکروی Py_TRACE_REFS نیست (گزینه‌ی --with-trace-refs را ببینید). با این حال، ساخت‌های دیباگ همچنان نمادهای بیشتری نسبت به ساخت‌های نهایی نمایان می‌کنند و کدی که بر پایه‌ی یک ساخت‌ دیباگ ساخته شده باشد، لزوماً با ساخت‌ نهایی سازگار نیست.

3.3.9. گزینه‌های اشکال‌زدایی¶

--with-pydebug¶

ساخت پایتون در حالت اشکال‌زدایی: ماکرو Py_DEBUG را تعریف کنید (به‌صورت پیش‌فرض غیرفعال است).

--with-trace-refs¶

فعال‌سازی ردگیری ارجاع‌ها به منظور اشکال‌زدایی (به‌طور پیش‌فرض غیرفعال است).

اثرات:

  • ماکرو Py_TRACE_REFS را تعریف کنید.

  • تابع sys.getobjects() اضافه شد.

  • افزودن متغیر محیطی PYTHONDUMPREFS.

می‌توان از متغیر محیطی PYTHONDUMPREFS برای برون‌ریزی اشیاء و شمارش ارجاع‌هایی که هنگام خروج پایتون هنوز زنده‌اند استفاده کرد.

اشیاء تخصیص‌یافته به‌صورت ایستا ردگیری نمی‌شوند.

اضافه شده در نسخه‌ی 3.8.

تغییر یافته در نسخه‌ی 3.13: این ساخت‌ اکنون از نظر ABI با ساخت‌ انتشار و ساخت‌ اشکال‌زدایی سازگار است.

--with-assertions¶

ساخت با ادعاهای C فعال‌شده (پیش‌فرض: خیر): assert(...); و _PyObject_ASSERT(...);.

در صورت تنظیم، ماکروی NDEBUG در متغیر کامپایلر OPT تعریف نمی‌شود.

همچنین گزینه‌ی --with-pydebug (ساخت اشکال‌زدایی) را ببینید که ادعاها را نیز فعال می‌کند.

اضافه شده در نسخه‌ی 3.6.

--with-valgrind¶

فعال‌سازی پشتیبانی از Valgrind (پیش‌فرض: خیر).

--with-dtrace¶

فعال‌سازی پشتیبانی از DTrace (پیش‌فرض خیر است).

به ابزارگذاری (instrumenting) سی‌پایتون با DTrace و SystemTap مراجعه کنید.

اضافه شده در نسخه‌ی 3.6.

--with-address-sanitizer¶

آشکارساز خطاهای حافظه‌ی AddressSanitizer یعنی asan را فعال می‌کند (پیش‌فرض: خیر). برای بهبود قابلیت‌های تشخیص ASan، ممکن است بخواهید این گزینه را با --without-pymalloc نیز ترکیب کنید تا تخصیص‌دهنده‌ی تخصصی اشیاء کوچک (که تخصیص‌های آن توسط ASan پیگیری نمی‌شوند) غیرفعال شود.

اضافه شده در نسخه‌ی 3.6.

--with-memory-sanitizer¶

فعال‌سازی آشکارساز خطای تخصیص MemorySanitizer، msan (پیش‌فرض: خیر).

MSan برای حافظه‌ای که توسط کتابخانه‌هایی که با MSan ساخته نشدن مقداردهی اولیه شده، نتایج مثبت کاذب گزارش می‌دهد. بنابراین یا همه‌ی وابستگی‌ها را با MSan بسازید، یا ماژول‌های توسعه‌ای‌ای که از آن‌ها استفاده می‌کنند را در Modules/Setup.local غیرفعال کنید.

اضافه شده در نسخه‌ی 3.6.

--with-undefined-behavior-sanitizer¶

فعال کردن آشکارساز رفتار تعریف‌نشده UndefinedBehaviorSanitizer، ubsan (پیش‌فرض: خیر).

اضافه شده در نسخه‌ی 3.6.

--with-thread-sanitizer¶

فعال‌سازی آشکارساز رقابت داده ThreadSanitizer، tsan (پیش‌فرض: خیر).

اضافه شده در نسخه‌ی 3.13.

3.3.10. گزینه‌های پیونددهنده¶

--enable-shared¶

فعال‌سازی ساخت کتابخانه‌ی اشتراکی پایتون: libpython (پیش‌فرض: خیر).

--without-static-libpython¶

libpythonMAJOR.MINOR.a ساخته نمی‌شود و python.o نصب نمی‌شود (به‌طور پیش‌فرض ساخته و فعال می‌شوند).

اضافه شده در نسخه‌ی 3.10.

--enable-static-libpython-for-interpreter¶

فایل دودویی مفسر پایتون (python3) را به کتابخانه‌ی مشترک پایتون لینک نکنید؛ در عوض، مفسر را به‌طور ایستا به libpython لینک کنید، گویی از --enable-shared استفاده نشده است، اما به ساخت libpython مشترک (برای استفاده‌ی سایر برنامه‌ها) ادامه دهید.

اگر از --enable-shared استفاده نشود، این گزینه هیچ کاری انجام نمی‌دهد.

حالت پیش‌فرض (هنگامی که از -enable-shared استفاده می‌شود) این است که مفسر پایتون به کتابخانه‌ی مشترک ساخته‌شده لینک شود.

اضافه شده در نسخه‌ی 3.15.

3.3.11. گزینه‌های کتابخانه‌ها¶

--with-libs='lib1 ...'¶

لینک شدن با کتابخانه‌های اضافی (پیش‌فرض: خیر).

--with-system-expat¶

ماژول pyexpat را با استفاده از یک کتابخانه‌ی expat نصب‌شده بسازید (پیش‌فرض: خیر).

--with-system-libmpdec¶

ماژول توسعه‌ای _decimal را با استفاده از کتابخانه‌ی نصب‌شده‌ی mpdecimal بسازید؛ به ماژول decimal مراجعه کنید (پیش‌فرض بله است).

اضافه شده در نسخه‌ی 3.3.

تغییر یافته در نسخه‌ی 3.13: به‌طور پیش‌فرض از کتابخانه‌ی نصب‌شده‌ی mpdecimal استفاده می‌کند.

تغییر یافته در نسخه‌ی 3.15: اگر کتابخانه‌ی نصب‌شده‌ی mpdecimal یافت نشود، دیگر نسخه‌ی همراه کتابخانه به‌صورت ضمنی انتخاب نمی‌شود. تنها در پایتون 3.15 می‌توان آن را همچنان به‌صورت صریح با استفاده از --with-system-libmpdec=no یا --without-system-libmpdec انتخاب کرد.

منسوخ شده از نسخه‌ی 3.13, در نسخه‌ی 3.16 حذف خواهد شد: دیگر نسخه‌ای از کدهای منبع کتابخانه mpdecimal همراه با پایتون 3.16 توزیع نخواهد شد.

همچنین ببینید

LIBMPDEC_CFLAGS و LIBMPDEC_LIBS.

--with-readline=readline|editline¶

یک کتابخانه بک‌اند برای ماژول readline تعیین می‌کند.

  • readline: استفاده از readline به عنوان بک‌اند.

  • editline: استفاده از editline به‌عنوان بک‌اند.

اضافه شده در نسخه‌ی 3.10.

--without-readline¶

ماژول readline را نسازید (به‌طور پیش‌فرض ساخته می‌شود).

ماکرو HAVE_LIBREADLINE را تعریف نکنید.

اضافه شده در نسخه‌ی 3.10.

--with-libm=STRING¶

نادیده گرفتن کتابخانه ریاضی libm و استفاده از STRING به جای آن (پیش‌فرض وابسته به سیستم است).

--with-libc=STRING¶

جایگزین کردن کتابخانه C یعنی libc با STRING (پیش‌فرض به سیستم بستگی دارد).

--with-openssl=DIR¶

ریشه‌ی پوشه‌ی OpenSSL.

اضافه شده در نسخه‌ی 3.7.

--with-openssl-rpath=[no|auto|DIR]¶

تنظیم پوشه کتابخانه در زمان اجرا (rpath) برای کتابخانه‌های OpenSSL:

  • no (پیش‌فرض): rpath تنظیم نشود؛

  • auto: تشخیص خودکار rpath از --with-openssl و pkg-config؛

  • DIR: تعیین صریح مسیر زمان اجرا (rpath).

اضافه شده در نسخه‌ی 3.10.

3.3.12. گزینه‌های امنیتی¶

--with-hash-algorithm=[fnv|siphash13|siphash24]¶

انتخاب الگوریتم هش برای استفاده در Python/pyhash.c:

  • siphash13 (پیش‌فرض)؛

  • siphash24;

  • fnv.

اضافه شده در نسخه‌ی 3.4.

اضافه شده در نسخه‌ی 3.11: siphash13 اضافه شده و پیش‌فرض جدید است.

--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2¶

ماژول‌های هش توکار:

  • md5;

  • sha1;

  • sha256;

  • sha512;

  • sha3 (همراه با shake)؛

  • blake2.

اضافه شده در نسخه‌ی 3.9.

--with-ssl-default-suites=[python|openssl|STRING]¶

نادیده گرفتن رشته بدنه‌های رمز پیش‌فرض OpenSSL:

  • python (پیش‌فرض): استفاده از انتخاب ترجیحی پایتون؛

  • openssl: پیش‌فرض‌های OpenSSL را دست‌نخورده بگذارید؛

  • STRING: استفاده از یک رشته‌ی سفارشی

به ماژول ssl مراجعه کنید.

اضافه شده در نسخه‌ی 3.7.

تغییر یافته در نسخه‌ی 3.10: تنظیمات python و STRING نیز TLS 1.2 را به عنوان حداقل نسخه‌ی پروتکل تنظیم می‌کنند.

--disable-safety¶

گزینه‌های کامپایلری را که به دلایل امنیتی و بدون هیچ سربار عملکردی recommended by OpenSSF هستند، غیرفعال می‌کند. اگر این گزینه فعال نباشد، سی‌پایتون بر اساس گزینه‌های امنیتی کامپایلر و بدون هیچ کندی ساخته می‌شود. در صورت فعال بودن این گزینه، سی‌پایتون با گزینه‌های کامپایلری فهرست‌شده در ادامه ساخته نخواهد شد.

گزینه‌های کامپایلر زیر با --disable-safety غیرفعال می‌شوند:

  • -fstack-protector-strong: فعال‌سازی بررسی‌های زمان اجرا برای سرریز بافر مبتنی بر پشته.

  • -Wtrampolines: فعال کردن هشدارهای مربوط به ترامپولین‌هایی که به پشته‌های اجرایی نیاز دارند.

اضافه شده در نسخه‌ی 3.14.

--enable-slower-safety¶

فعال کردن گزینه‌های کامپایلر که به دلایل امنیتی recommended by OpenSSF شده‌اند و نیازمند سربار هستند. اگر این گزینه فعال نشده باشد، سی‌پایتون بر اساس گزینه‌های امن کامپایلر که بر کارایی تأثیر می‌گذارند ساخته نخواهد شد. هنگامی که این گزینه فعال باشد، سی‌پایتون با گزینه‌های کامپایلر فهرست‌شده در زیر ساخته خواهد شد.

گزینه‌های کامپایلر زیر با --enable-slower-safety فعال می‌شوند:

  • -D_FORTIFY_SOURCE=3: کدهای منبع را با بررسی‌های زمان کامپایل و زمان اجرا برای استفاده ناامن از libc و سرریز بافر تقویت می‌کند.

اضافه شده در نسخه‌ی 3.14.

3.3.13. گزینه‌های macOS¶

‏:source:Mac/README.rst را ببینید.

--enable-universalsdk¶
--enable-universalsdk=SDKDIR¶

یک ساخت دودویی همگانی ایجاد کنید. SDKDIR مشخص می‌کند که از کدام macOS SDK باید برای انجام ساخت استفاده شود (پیش‌فرض: no).

--enable-framework¶
--enable-framework=INSTALLDIR¶

به‌جای نصب سنتی یونیکس، یک Python.framework ایجاد می‌کند. INSTALLDIR اختیاری است و مسیر نصب را مشخص می‌کند (پیش‌فرض: خیر).

--with-universal-archs=ARCH¶

نوع دودویی همگانی که باید ساخته شود را مشخص کنید. این گزینه تنها زمانی معتبر است که --enable-universalsdk تنظیم شده باشد.

گزینه‌ها:

  • universal2 (x86-64 و arm64)؛

  • 32-bit (PPC و i386)؛

  • 64-bit (PPC64 و x86-64)؛

  • 3-way (i386، PPC و x86-64)؛

  • intel (i386 و x86-64)؛

  • intel-32 (i386);

  • intel-64 (x86-64);

  • all (PPC، i386، PPC64 و x86-64).

توجه داشته باشید که مقادیر این آیتم پیکربندی با شناسه‌های استفاده‌شده برای چرخ‌های دودویی همگانی (universal binary wheels) در macOS یکسان نیستند. برای جزئیات درباره‌ی برچسب‌های سازگاری پلتفرم بسته‌بندی استفاده‌شده در macOS به راهنمای کاربر بسته‌بندی پایتون مراجعه کنید

--with-framework-name=FRAMEWORK¶

نام چارچوب پایتون در macOS را مشخص می‌کند؛ تنها زمانی معتبر است که --enable-framework تنظیم شده باشد (پیش‌فرض: Python).

--with-app-store-compliance¶
--with-app-store-compliance=PATCH-FILE¶

کتابخانه استاندارد پایتون شامل رشته‌هایی است که شناخته شده است هنگام ارسال برای توزیع از طریق App Store‌های macOS و iOS، خطاهای ابزار بازرسی خودکار را ایجاد می‌کنند. در صورت فعال بودن، این گزینه فهرست وصل‌هایی را اعمال می‌کند که شناخته شده است سازگاری با فروشگاه برنامه را اصلاح می‌کنند. همچنین می‌توان یک پرونده وصل سفارشی مشخص کرد. این گزینه به‌طور پیش‌فرض غیرفعال است.

اضافه شده در نسخه‌ی 3.13.

3.3.14. گزینه‌های iOS¶

نگاه کنید به Platforms/Apple/iOS/README.md.

--enable-framework=INSTALLDIR¶

ایجاد یک Python.framework. برخلاف macOS، آرگومان INSTALLDIR که مسیر نصب را مشخص می‌کند، الزامی است.

--with-framework-name=FRAMEWORK¶

نام چارچوب را مشخص کنید (پیش‌فرض: Python).

3.3.15. گزینه‌های کامپایل متقاطع¶

کامپایل متقاطع (cross compiling)، که با نام ساخت متقاطع (cross building) نیز شناخته می‌شود، می‌تواند برای ساخت پایتون برای معماری CPU یا پلتفرم دیگری به کار رود. کامپایل متقاطع به یک مفسر پایتون برای پلتفرم ساخت نیاز دارد. نسخه‌ی پایتون ساخت باید با نسخه‌ی پایتون میزبانی که به‌صورت متقاطع کامپایل شده است مطابقت داشته باشد.

--build=BUILD¶

پیکربندی برای ساخت روی BUILD، که معمولاً توسط config.guess حدس زده می‌شود.

--host=HOST¶

کامپایل متقاطع برای ساخت برنامه‌هایی که روی HOST (پلتفرم هدف) اجرا می‌شوند

--with-build-python=path/to/python¶

مسیر دودویی python ساخت برای کامپایل متقاطع

اضافه شده در نسخه‌ی 3.11.

CONFIG_SITE=file¶

متغیر محیطی که به پرونده‌ای حاوی بازنویسی‌های configure اشاره می‌کند.

نمونه پرونده config.site:

# config.site-aarch64
ac_cv_buggy_getaddrinfo=no
ac_cv_file__dev_ptmx=yes
ac_cv_file__dev_ptc=no
HOSTRUNNER¶

برنامه‌ای برای اجرای سی‌پایتون روی پلتفرم میزبان به منظور کامپایل متقاطع.

اضافه شده در نسخه‌ی 3.11.

مثال کامپایل متقاطع:

CONFIG_SITE=config.site-aarch64 ../configure \
    --build=x86_64-pc-linux-gnu \
    --host=aarch64-unknown-linux-gnu \
    --with-build-python=../x86_64/python

3.4. سیستم ساخت پایتون¶

3.4.1. پرونده‌های اصلی سیستم ساخت¶

  • configure.ac => configure;

  • Makefile.pre.in => Makefile (ایجاد‌شده توسط configure);

  • pyconfig.h (ایجادشده توسط configure)؛

  • Modules/Setup: ماژول‌های توسعه‌ای C که توسط Makefile و با استفاده از اسکریپت پوسته‌ی Module/makesetup ساخته می‌شوند؛

3.4.2. مراحل اصلی ساخت¶

  • پرونده‌های C (.c) به‌عنوان پرونده‌های شیء (.o) ساخته می‌شوند.

  • یک کتابخانه‌ی ایستای libpython (.a) از پرونده‌های شیء ساخته می‌شود.

  • python.o و کتابخانه‌ی ایستای libpython به برنامه‌ی نهایی python پیوند داده می‌شوند.

  • توسعه‌های C توسط Makefile ساخته می‌شوند (به Modules/Setup مراجعه کنید).

3.4.3. اهداف اصلی Makefile¶

make¶

در بیشتر موارد، هنگام بازساخت پس از ویرایش مقداری کد یا به‌روزرسانی چک‌اوت (checkout) خود از مخزن بالادستی، کافی است make را اجرا کنید که (طبق معناشناسی Make) هدف پیش‌فرض، یعنی نخستین هدف تعریف‌شده در Makefile، را می‌سازد. طبق سنت (از جمله در پروژه‌ی سی‌پایتون)، این معمولاً هدف all است. اسکریپت configure یک متغیر autoconf به نام @DEF_MAKE_ALL_RULE@ را بسط می‌دهد تا دقیقاً توصیف کند که make all چه هدف‌هایی را خواهد ساخت. سه گزینه عبارت‌اند از:

  • profile-opt (پیکربندی‌شده با --enable-optimizations)

  • profile-opt (پیکربندی‌شده با --enable-optimizations)

  • build_wasm (در صورتی که پلتفرم میزبان با wasm32-wasi* یا wasm32-emscripten مطابقت داشته باشد، انتخاب می‌شود)

  • build_wasm (در صورتی که پلتفرم میزبان با wasm32-wasi* یا wasm32-emscripten مطابقت داشته باشد، انتخاب می‌شود)

  • build_all (پیکربندی‌شده بدون استفاده‌ی صریح از هیچ‌یک از دو مورد دیگر)

بسته به جدیدترین تغییرات پرونده‌های منبع، Make هر هدفی (پرونده‌های شیء و پرونده‌های اجرایی) را که قدیمی تشخیص داده شود، بازسازی می‌کند، از جمله در صورت لزوم configure را دوباره اجرا می‌کند. با این حال، وابستگی‌های منبع/هدف بسیار زیادند و به‌صورت دستی نگهداری می‌شوند، بنابراین گاهی Make تمام اطلاعات لازم برای تشخیص صحیح همه هدف‌هایی را که باید بازسازی شوند ندارد. بسته به اینکه کدام هدف‌ها بازسازی نشوند، ممکن است با تعدادی مشکل مواجه شوید. اگر با مشکلات ساخت یا آزمون مواجه شدید که نتوانید توضیح دیگری برایشان بیابید، make clean && make بیشتر مشکلات وابستگی را دور می‌زند، هرچند به بهای زمان ساخت طولانی‌تر.

make platform¶

برنامه python را بسازید، اما ماژول‌های توسعه‌ای کتابخانه استاندارد را نسازید. این کار پرونده‌ای با نام platform تولید می‌کند که شامل یک سطر توصیف‌کننده‌ی جزئیات پلتفرم ساخت است؛ برای مثال macosx-14.3-arm64-3.12 یا linux-x86_64-3.13.

make profile-opt¶

پایتون را با استفاده از بهینه‌سازی هدایت‌شده با پروفایل (PGO) بسازید. می‌توانید از گزینه‌ی --enable-optimizations در configure استفاده کنید تا این کار به هدف پیش‌فرض دستور make تبدیل شود (make all یا فقط make).

make clean¶

پرونده‌های ساخته‌شده را حذف کنید.

make distclean¶

علاوه بر کاری که make clean انجام می‌دهد، پرونده‌هایی را که اسکریپت configure ایجاد کرده است حذف می‌کند. configure باید پیش از ساخت مجدد اجرا شود. [7]

make install¶

هدف all را بسازید و پایتون را نصب کنید.

make test¶

هدف all را بسازید و بدنه‌ی آزمون‌های پایتون را با گزینه‌ی --fast-ci و بدون آزمون‌های رابط گرافیکی (GUI) اجرا کنید. متغیرها:

  • TESTOPTS: گزینه‌های اضافی خط فرمان regrtest.

  • TESTPYTHONOPTS: گزینه‌های اضافی خط فرمان پایتون.

  • TESTTIMEOUT: مهلت زمانی بر حسب ثانیه (پیش‌فرض: ۱۰ دقیقه).

make ci¶

این شبیه به make test است، اما از -ugui استفاده می‌کند تا آزمون‌های GUI را نیز اجرا کند.

اضافه شده در نسخه‌ی 3.14.

make buildbottest¶

این مشابه make test است، اما به‌جای گزینه‌ی --fast-ci، از گزینه‌ی --slow-ci و مهلت زمانی پیش‌فرض ۲۰ دقیقه استفاده می‌کند.

make regen-all¶

بازتولید (تقریباً) همه‌ی پرونده‌های تولیدشده. این پرونده‌ها شامل (اما نه محدود به) حالت‌های بایت‌کد، و پرونده‌ی تولیدگر پارسر هستند. make regen-stdlib-module-names و autoconf باید برای بقیه‌ی پرونده‌های تولیدشده جداگانه اجرا شوند.

3.4.4. توسعه‌های C¶

برخی از ماژول‌های توسعه‌ای C به‌صورت ماژول‌های توکار ساخته می‌شوند، مانند ماژول sys. این ماژول‌ها با تعریف ماکروی Py_BUILD_CORE_BUILTIN ساخته می‌شوند. ماژول‌های توکار ویژگی __file__ ندارند:

>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> sys.__file__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'sys' has no attribute '__file__'

سایر ماژول‌های توسعه‌ای C به‌صورت کتابخانه‌های پویا ساخته می‌شوند، مانند ماژول _asyncio. آن‌ها با تعریف ماکرو Py_BUILD_CORE_MODULE ساخته می‌شوند. مثال در لینوکس x86-64:

>>> import _asyncio
>>> _asyncio
<module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>
>>> _asyncio.__file__
'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'

Modules/Setup برای تولید هدف‌های Makefile به‌منظور ساخت توسعه‌های C استفاده می‌شود. در ابتدای پرونده‌ها، توسعه‌های C به‌صورت ماژول‌های توکار ساخته می‌شوند. توسعه‌هایی که پس از نشانه‌ی *shared* تعریف می‌شوند، به‌صورت کتابخانه‌های پویا ساخته می‌شوند.

ماکروهای PyAPI_FUNC()، PyAPI_DATA() و PyMODINIT_FUNC در Include/exports.h بسته به اینکه ماکرو Py_BUILD_CORE_MODULE تعریف شده باشد یا نه، به‌طور متفاوتی تعریف می‌شوند:

  • اگر Py_BUILD_CORE_MODULE تعریف‌شده باشد، از Py_EXPORTED_SYMBOL استفاده کنید

  • در غیر این صورت از Py_IMPORTED_SYMBOL استفاده کنید.

اگر ماکروی Py_BUILD_CORE_BUILTIN به‌اشتباه در یک افزونه‌ی C که به‌صورت کتابخانه‌ی اشتراکی ساخته شده است استفاده شود، تابع PyInit_xxx() آن اکسپورت نمی‌شود و هنگام ایمپورت، باعث بروز ImportError می‌شود.

3.5. پرچم‌های کامپایلر و پیونددهنده¶

گزینه‌هایی که توسط اسکریپت ./configure و متغیرهای محیطی تعیین می‌شوند و توسط Makefile استفاده می‌شوند.

3.5.1. پرچم‌های پیش‌پردازنده¶

CONFIGURE_CPPFLAGS¶

مقدار متغیر CPPFLAGS که به اسکریپت ./configure پاس داده می‌شود.

اضافه شده در نسخه‌ی 3.6.

CPPFLAGS¶

پرچم‌های پیش‌پردازنده‌ی (Objective) C/C++، مثلاً -Iinclude_dir اگر سرآیندهایی در پوشه‌ی غیراستاندارد include_dir داشته باشید.

هر دو CPPFLAGS و LDFLAGS باید شامل مقدار پوسته باشند تا بتوان ماژول‌های توسعه‌ای را با استفاده از پوشه‌های مشخص‌شده در متغیرهای محیطی ساخت.

BASECPPFLAGS¶

اضافه شده در نسخه‌ی 3.4.

PY_CPPFLAGS¶

پرچم‌های اضافی پیش‌پردازنده که برای ساخت پرونده‌های شیء مفسر افزوده می‌شوند.

پیش‌فرض: $(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS).

اضافه شده در نسخه‌ی 3.2.

3.5.2. پرچم‌های کامپایلر¶

CC¶

فرمان کامپایلر C.

مثال: gcc -pthread.

CXX¶

دستور کامپایلر C++.

مثال: g++ -pthread.

CFLAGS¶

پرچم‌های کامپایلر C.

CFLAGS_NODIST¶

CFLAGS_NODIST برای ساخت مفسر و ماژول‌های توسعه‌ای C کتابخانه استاندارد استفاده می‌شود. زمانی از آن استفاده کنید که یک پرچم کامپایلر پس از نصب پایتون نباید بخشی از CFLAGS باشد (gh-65320).

به‌طور خاص، CFLAGS نباید شامل موارد زیر باشد:

  • پرچم کامپایلر -I (برای تنظیم مسیر جست‌وجوی پرونده‌های include). پرچم‌های -I از چپ به راست پردازش می‌شوند و هر پرچمی که در CFLAGS باشد، بر پرچم‌های -I ارائه‌شده توسط کاربر و بسته اولویت خواهد داشت.

  • پرچم‌های سخت‌سازی (hardening) مانند -Werror، زیرا توزیع‌ها نمی‌توانند کنترل کنند که آیا بسته‌های نصب‌شده توسط کاربران با چنین استانداردهای بالاتری مطابقت دارند یا خیر.

اضافه شده در نسخه‌ی 3.5.

COMPILEALL_OPTS¶

گزینه‌هایی که هنگام ساخت پرونده‌های PYC در make install به خط فرمان compileall ارسال می‌شوند. پیش‌فرض: -j0.

اضافه شده در نسخه‌ی 3.12.

EXTRA_CFLAGS¶

پرچم‌های اضافی کامپایلر C.

CONFIGURE_CFLAGS¶

مقدار متغیر CFLAGS که به اسکریپت ./configure پاس داده می‌شود.

اضافه شده در نسخه‌ی 3.2.

CONFIGURE_CFLAGS_NODIST¶

مقدار متغیر CFLAGS_NODIST که به اسکریپت ./configure پاس داده‌شده است.

اضافه شده در نسخه‌ی 3.5.

BASECFLAGS¶

پرچم‌های پایه‌ی کامپایلر.

OPT¶

پرچم‌های بهینه‌سازی.

CFLAGS_ALIASING¶

پرچم‌های آلیاسینگ (aliasing) سخت‌گیرانه یا غیرسخت‌گیرانه که برای کامپایل Python/dtoa.c استفاده می‌شوند.

اضافه شده در نسخه‌ی 3.7.

CFLAGS_CEVAL¶

پرچم‌های استفاده‌شده برای کامپایل Python/ceval.c.

اضافه شده در نسخه‌ی 3.14.5.

CCSHARED¶

پرچم‌های کامپایلر استفاده‌شده برای ساخت یک کتابخانه اشتراکی.

برای مثال، -fPIC در لینوکس و BSD استفاده می‌شود.

CFLAGSFORSHARED¶

پرچم‌های اضافی C که برای ساخت پرونده‌های شیء مفسر افزوده می‌شوند.

پیش‌فرض: $(CCSHARED) هنگامی که از --enable-shared استفاده می‌شود، یا در غیر این صورت یک رشته خالی.

PY_CFLAGS¶

پیش‌فرض: $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS).

PY_CFLAGS_NODIST¶

پیش‌فرض: $(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal.

اضافه شده در نسخه‌ی 3.5.

PY_STDMODULE_CFLAGS¶

پرچم‌های C استفاده‌شده برای ساخت پرونده‌های شیء مفسر.

پیش‌فرض: $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED).

اضافه شده در نسخه‌ی 3.7.

PY_CORE_CFLAGS¶

پیش‌فرض: $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE.

اضافه شده در نسخه‌ی 3.2.

PY_BUILTIN_MODULE_CFLAGS¶

پرچم‌های کامپایلر برای ساخت یک ماژول توسعه‌ای کتابخانه استاندارد به‌عنوان یک ماژول توکار، مانند ماژول posix.

پیش‌فرض: $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN.

اضافه شده در نسخه‌ی 3.8.

PURIFY¶

دستور Purify. برنامه‌ی Purify یک اشکال‌زدای حافظه است.

پیش‌فرض: رشته خالی (استفاده نمی‌شود).

3.5.3. پرچم‌های پیونددهنده (linker flags)¶

LINKCC¶

فرمان پیونددهنده که برای ساخت برنامه‌هایی مانند python و _testembed استفاده می‌شود.

پیش‌فرض: $(PURIFY) $(CC).

CONFIGURE_LDFLAGS¶

مقدار متغیر LDFLAGS که به اسکریپت ./configure ارسال می‌شود.

از انتساب CFLAGS، LDFLAGS و غیره خودداری کنید تا کاربران بتوانند از آن‌ها در خط فرمان برای افزودن به این مقادیر استفاده کنند، بدون اینکه مقادیر از پیش تنظیم‌شده را از بین ببرند.

اضافه شده در نسخه‌ی 3.2.

LDFLAGS_NODIST¶

LDFLAGS_NODIST به همان شیوه‌ی CFLAGS_NODIST استفاده می‌شود. از آن زمانی استفاده کنید که یک پرچم پیونددهنده (linker flag) پس از نصب پایتون بخشی از LDFLAGS نباشد (gh-65320).

به‌ویژه، LDFLAGS نباید شامل موارد زیر باشد:

  • پرچم کامپایلر -L (برای تنظیم مسیر جستجوی کتابخانه‌ها). پرچم‌های -L از چپ به راست پردازش می‌شوند، و هر پرچم موجود در LDFLAGS بر پرچم‌های -L تأمین‌شده از سوی کاربر و بسته اولویت خواهد داشت.

CONFIGURE_LDFLAGS_NODIST¶

مقدار متغیر LDFLAGS_NODIST که به اسکریپت ./configure پاس داده می‌شود.

اضافه شده در نسخه‌ی 3.8.

LDFLAGS¶

پرچم‌های پیونددهنده، برای مثال -Llib_dir اگر کتابخانه‌ها را در پوشه‌ی غیراستاندارد lib_dir دارید.

هر دو CPPFLAGS و LDFLAGS باید شامل مقدار پوسته باشند تا بتوان ماژول‌های توسعه‌ای را با استفاده از پوشه‌های مشخص‌شده در متغیرهای محیطی ساخت.

اگر پرچم‌های پیونددهنده‌ی ارائه‌شده مختص فایل اجرایی هستند (مانند پرچم -pie در GCC)، لطفاً استفاده از EXE_LDFLAGS را در نظر بگیرید.

LIBS¶

پرچم‌های پیونددهنده برای فرستادن کتابخانه‌ها به پیونددهنده هنگام پیوند دادن پرونده اجرایی پایتون.

مثال: -lrt.

LDSHARED¶

دستور ساخت یک کتابخانه اشتراکی.

پیش‌فرض: @LDSHARED@ $(PY_LDFLAGS).

BLDSHARED¶

دستور ساخت کتابخانه اشتراکی libpython.

پیش‌فرض: @BLDSHARED@ $(PY_CORE_LDFLAGS).

PY_LDFLAGS¶

پیش‌فرض: $(CONFIGURE_LDFLAGS) $(LDFLAGS).

PY_LDFLAGS_NODIST¶

پیش‌فرض: $(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST).

اضافه شده در نسخه‌ی 3.8.

PY_CORE_LDFLAGS¶

پرچم‌های پیونددهنده که برای ساخت پرونده‌های شیء مفسر استفاده می‌شوند.

اضافه شده در نسخه‌ی 3.8.

EXE_LDFLAGS¶

پرچم‌های پیونددهنده‌ای که برای ساخت اهداف اجرایی مانند مفسر استفاده می‌شوند. در صورت ارائه، PY_CORE_EXE_LDFLAGS به جای PY_CORE_LDFLAGS استفاده خواهد شد.

اضافه شده در نسخه‌ی 3.15.

CONFIGURE_EXE_LDFLAGS¶

مقدار متغیر EXE_LDFLAGS که به اسکریپت ./configure پاس داده می شود.

اضافه شده در نسخه‌ی 3.15.

PY_CORE_EXE_LDFLAGS¶

پرچم های پیونددهنده ی مورد استفاده برای ساخت مفسر و اهداف اجرایی.

پیش فرض: $(PY_CORE_LDFLAGS)

اضافه شده در نسخه‌ی 3.15.

پانوشت‌ها

[7]

git clean -fdx راهی باز هم افراطی‌تر برای «تمیز کردن» چک‌اوت (checkout) شماست. این دستور تمام پرونده‌هایی را که Git آن‌ها را نمی‌شناسد حذف می‌کند. هنگام جست‌وجوی اشکال با استفاده از git bisect، انجام این کار بین کاوش‌ها توصیه می‌شود تا یک ساخت کاملاً تمیز تضمین شود. با احتیاط استفاده کنید، زیرا تمام پرونده‌هایی را که در Git ثبت نشده‌اند حذف خواهد کرد، از جمله کارهای جدید و کامیت‌نشده‌ی شما.

© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرم‌افزار پایتون نسخه ۲ منتشر شده است.
مثال‌ها، دستورالعمل‌ها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شده‌اند.
برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید.

بنیاد نرم‌افزار پایتون یک شرکت غیرانتفاعی است. لطفاً کمک مالی کنید.

آخرین به‌روزرسانی در نوامبر 12, 2026 (06:19 UTC). آیا اشکالی یافتید؟
ساخته شده با Sphinx 9.1.0.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.