sysconfig --- دسترسی به اطلاعات پیکربندی پایتون را فراهم میکند¶
اضافه شده در نسخهی 3.2.
کد منبع: Lib/sysconfig
ماژول sysconfig دسترسی به اطلاعات پیکربندی پایتون، مانند فهرست مسیرهای نصب و متغیرهای پیکربندی مرتبط با پلتفرم فعلی را فراهم میکند.
متغیرهای پیکربندی¶
یک توزیع پایتون شامل یک Makefile و یک پروندهی سرآیند pyconfig.h است که برای ساخت خود پرونده دودویی پایتون و نیز افزونههای C شخص ثالث که با استفاده از setuptools کامپایل میشوند، ضروری هستند.
sysconfig تمام متغیرهای موجود در این پروندهها را در یک دیکشنری قرار میدهد که میتوان با استفاده از get_config_vars() یا get_config_var() به آن دسترسی داشت.
توجه داشته باشید که در ویندوز، این مجموعه بسیار کوچکتر است.
- sysconfig.get_config_vars(*args)¶
بدون آرگومان، یک دیکشنری از تمام متغیرهای پیکربندی مرتبط با پلتفرم جاری را برمیگرداند.
با آرگومانها، فهرستی از مقادیر حاصل از جستوجوی هر آرگومان در دیکشنری متغیرهای پیکربندی را برمیگرداند.
برای هر آرگومان، اگر مقدار یافت نشود،
Noneبرگردانده میشود.
- sysconfig.get_config_var(name)¶
مقدار یک متغیر واحد name را برمیگرداند. معادل
get_config_vars().get(name)است.اگر name پیدا نشد،
Noneبرگردانده میشود.
نمونهای از کاربرد:
>>> import sysconfig
>>> sysconfig.get_config_var('Py_ENABLE_SHARED')
0
>>> sysconfig.get_config_var('LIBDIR')
'/usr/local/lib'
>>> sysconfig.get_config_vars('AR', 'CXX')
['ar', 'g++']
مسیرهای نصب¶
پایتون از یک طرحواره نصب استفاده میکند که بسته به سکو و گزینههای نصب متفاوت است. این طرحها در sysconfig با شناسههای یکتا بر اساس مقدار برگرداندهشده توسط os.name ذخیره شدهاند. نصبکنندههای بسته از این طرحها برای تعیین محل کپی پروندهها استفاده میکنند.
پایتون در حال حاضر از ۹ طرحواره پشتیبانی میکند:
posix_prefix: طرحی برای سکوهای POSIX مانند Linux یا macOS. این طرحواره پیشفرضی است که هنگام نصب Python یا یک کامپوننت استفاده میشود.
posix_home: طرحی برای پلتفرمهای POSIX، هنگامی که از گزینه home استفاده میشود. این طرحواره مسیرهایی را تعریف میکند که زیر یک پیشوند home مشخص قرار دارند.
posix_user: طرحی برای سکوهای POSIX، هنگامی که از گزینهی user استفاده میشود. این طرحواره مسیرهای واقعشده زیر پوشهی خانگی کاربر را تعریف میکند (
site.USER_BASE).posix_venv: طرحواره برای
محیطهای مجازی پایتوندر سکوهای POSIX؛ بهطور پیشفرض همان posix_prefix است.nt: طرحواره (scheme) برای ویندوز. این طرحواره پیشفرضی است که هنگام نصب پایتون یا یک کامپوننت استفاده میشود.
nt_user: طرحواره برای ویندوز، هنگامی که از گزینه user استفاده میشود.
nt_venv: طرحوارهای برای
محیطهای مجازی پایتوندر ویندوز؛ بهطور پیشفرض همان nt است.venv: طرحوارهای با مقادیری از posix_venv یا nt_venv، بسته به پلتفرمی که پایتون روی آن اجرا میشود.
osx_framework_user: طرحواره برای macOS، هنگامی که گزینهی user استفاده میشود.
هر طرحواره خود از مجموعهای از مسیرها تشکیل شده است و هر مسیر یک شناسه یکتا دارد. پایتون در حال حاضر از هشت مسیر استفاده میکند:
stdlib: پوشهای شامل پروندههای کتابخانه استاندارد پایتون که وابسته به پلتفرم خاصی نیستند.
platstdlib: پوشهای شامل پروندههای کتابخانه استاندارد پایتون که مختص پلتفرم هستند.
platlib: پوشهای برای پروندههای مختص سایت و مختص پلتفرم.
purelib: پوشهای برای پروندههای ویژهی سایت و غیرمختص به سکو (پایتون «خالص»).
include: پوشهی پروندههای سرآیند غیرمختص به سکو برای Python C-API.
platinclude: پوشهای برای پروندههای سرآیند وابسته به پلتفرم برای C-API پایتون.
scripts: پوشهای برای پروندههای اسکریپت.
data: پوشهای برای پروندههای داده.
طرحواره کاربر¶
این طرحواره بهعنوان راحتترین راهحل برای کاربرانی طراحی شده است که دسترسی نوشتن به پوشهی سراسری site-packages را ندارند یا مایل به نصب در آن نیستند.
پروندهها در زیرپوشههایی از site.USER_BASE نصب خواهند شد (که از این پس userbase نوشته میشود). این طرحواره، ماژولهای پایتون خالص و ماژولهای توسعه را در یک مکان نصب میکند (که بهعنوان site.USER_SITE نیز شناخته میشود).
posix_user¶
مسیر |
پوشه نصب |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
nt_user¶
مسیر |
پوشه نصب |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
osx_framework_user¶
مسیر |
پوشه نصب |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
طرحواره خانه¶
ایدهی پشت «طرحواره home (home scheme)» این است که شما یک مجموعهی شخصی از ماژولهای Python میسازید و نگهداری میکنید. نام این طرحواره از ایدهی پوشهی «home» در Unix گرفته شده است، زیرا غیرمعمول نیست که یک کاربر Unix کاری کند که پوشهی «home» او چیدمانی مشابه /usr/ یا /usr/local/ داشته باشد. هر کسی میتواند از این طرحواره استفاده کند، صرفنظر از سیستمعاملی که برای آن نصب میکند.
posix_home¶
مسیر |
پوشه نصب |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
طرحواره پیشوند¶
«طرحواره prefix» (prefix scheme) زمانی مفید است که بخواهید از یک نصب پایتون برای انجام ساخت/نصب (یعنی اجرای اسکریپت setup) استفاده کنید، اما ماژولها را در پوشهی ماژولهای شخص ثالث یک نصب پایتون دیگر (یا چیزی که شبیه یک نصب پایتون دیگر به نظر میرسد) نصب کنید. اگر این موضوع کمی غیرعادی به نظر میرسد، واقعاً همینطور است—به همین دلیل طرحهای user و home پیشتر آمدهاند. با این حال، حداقل دو مورد شناختهشده وجود دارد که طرحواره prefix در آنها مفید خواهد بود.
ابتدا در نظر بگیرید که بسیاری از توزیعهای لینوکس، پایتون را در /usr قرار میدهند، نه در /usr/local که سنتیتر است. این کاملاً مناسب است، زیرا در آن موارد، پایتون بخشی از «سیستم» است، نه یک افزونه محلی. با این حال، اگر در حال نصب ماژولهای پایتون از منبع هستید، احتمالاً میخواهید آنها در /usr/local/lib/python2.X قرار بگیرند، نه در /usr/lib/python2.X.
احتمال دیگر، یک سامانه فایلبندی شبکهای است که در آن نامی که برای نوشتن در یک پوشهی دوردست بهکار میرود با نامی که برای خواندن آن بهکار میرود متفاوت است: برای مثال، ممکن است مفسر پایتون که بهصورت /usr/local/bin/python در دسترس است، ماژولها را در /usr/local/lib/python2.X جستجو کند، اما آن ماژولها باید مثلاً در /mnt/@server/export/lib/python2.X نصب شوند.
posix_prefix¶
مسیر |
پوشه نصب |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
nt¶
مسیر |
پوشه نصب |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
توابع مسیر نصب¶
sysconfig چند تابع برای تعیین این مسیرهای نصب فراهم میکند.
- sysconfig.get_scheme_names()¶
یک تاپل حاوی تمام طرحهایی که در حال حاضر در
sysconfigپشتیبانی میشوند، برمیگرداند.
- sysconfig.get_default_scheme()¶
نام طرحواره پیشفرض برای سکوی فعلی را برمیگرداند.
اضافه شده در نسخهی 3.10: این تابع پیشتر
_get_default_scheme()نام داشت و بهعنوان جزئیات پیادهسازی در نظر گرفته میشد.تغییر یافته در نسخهی 3.11: هنگامی که پایتون از یک محیط مجازی اجرا میشود، طرحواره venv برگردانده میشود.
- sysconfig.get_preferred_scheme(key)¶
یک نام طرحواره ترجیحی برای چیدمان نصب مشخصشده با key را برمیگرداند.
key باید یکی از
"prefix"،"home"یا"user"باشد.مقدار بازگشتی یک نام طرحواره است که در
get_scheme_names()فهرستشده است. میتوان آن را به توابعsysconfigکه آرگومان scheme میگیرند، مانندget_paths()ارسال کرد.اضافه شده در نسخهی 3.10.
تغییر یافته در نسخهی 3.11: هنگامی که پایتون از یک محیط مجازی اجرا میشود و
key="prefix"باشد، طرحواره venv برگردانده میشود.
- sysconfig._get_preferred_schemes()¶
یک دیکشنری حاوی نام طرحوارههای ترجیحی در سکوی فعلی برمیگرداند. پیادهسازان و بازتوزیعکنندگان پایتون میتوانند طرحوارههای ترجیحی خود را به مقدار سراسری در سطح ماژول
_INSTALL_SCHEMESاضافه کنند و این تابع را اصلاح کنند تا آن نام طرحها را برگرداند و برای مثال طرحوارههای متفاوتی را برای استفاده مدیران بسته سیستم و زبان فراهم کنند، بهطوری که بستههای نصبشده توسط هر یک با بستههای نصبشده توسط دیگری مخلوط نشوند.کاربران نهایی نباید از این تابع استفاده کنند، بلکه باید بهجای آن از
get_default_scheme()وget_preferred_scheme()استفاده کنند.اضافه شده در نسخهی 3.10.
- sysconfig.get_path_names()¶
یک تاپل شامل تمام نامهای مسیری که در حال حاضر در
sysconfigپشتیبانی میشوند را برمیگرداند.
- sysconfig.get_path(name[, scheme[, vars[, expand]]])¶
مسیر نصب متناظر با نام مسیر name را از طرحواره نصب با نام scheme برمیگرداند.
name باید مقداری از فهرستی باشد که
get_path_names()برمیگرداند.sysconfigمسیرهای نصب متناظر با هر نام مسیر را برای هر سکو، با متغیرهایی که باید بسط داده شوند، ذخیره میکند. برای مثال، مسیر stdlib برای طرحواره nt برابر است با:{base}/Lib.get_path()از متغیرهای برگرداندهشده توسطget_config_vars()برای بسط مسیر استفاده خواهد کرد. همه متغیرها برای هر سکو مقادیر پیشفرض دارند، بنابراین میتوانید این تابع را فراخوانی کنید و مقدار پیشفرض را دریافت کنید.اگر scheme داده شده باشد، باید مقداری از فهرستی باشد که توسط
get_scheme_names()برگردانده میشود. در غیر این صورت، از طرحواره پیشفرض برای سکّوی فعلی استفاده میشود.اگر vars ارائه شده باشد، باید یک دیکشنری از متغیرها باشد که دیکشنری بازگشتدادهشده توسط
get_config_vars()را بهروزرسانی میکند.اگر expand روی
Falseتنظیم شده باشد، مسیر با استفاده از متغیرها بسط داده نخواهد شد.اگر name پیدا نشد، یک
KeyErrorپرتاب میشود.
- sysconfig.get_paths([scheme[, vars[, expand]]])¶
یک دیکشنری شامل تمام مسیرهای نصب متناظر با یک طرحواره نصب برمیگرداند. برای اطلاعات بیشتر
get_path()را ببینید.اگر scheme ارائه نشده باشد، از طرحوارهی پیشفرض برای پلتفرم فعلی استفاده میشود.
اگر vars ارائه شده باشد، باید یک دیکشنری از متغیرها باشد که دیکشنری مورد استفاده برای گسترش مسیرها را بهروزرسانی میکند.
اگر expand روی false تنظیم شود، مسیرها گسترش نمییابند.
اگر scheme یک طرحواره موجود نباشد،
get_paths()یکKeyErrorپرتاب خواهد کرد.
توابع دیگر¶
- sysconfig.get_python_version()¶
شمارهی نسخهی پایتون بهصورت
MAJOR.MINORرا بهعنوان یک رشته برمیگرداند. مشابه'%d.%d' % sys.version_info[:2].
- sysconfig.get_platform()¶
رشتهای را برمیگرداند که سکوی کنونی را مشخص میکند.
این عمدتاً برای تمایز پوشههای ساخت وابسته به پلتفرم و توزیعهای ساختهشده وابسته به پلتفرم استفاده میشود. معمولاً شامل نام و نسخه سیستمعامل و معماری است (همانطور که توسط
os.uname()ارائه میشود)، اگرچه اطلاعات دقیق گنجاندهشده به سیستمعامل بستگی دارد؛ برای مثال، در لینوکس، نسخه کرنل اهمیت چندانی ندارد.نمونههایی از مقادیر برگرداندهشده:
ویندوز:
win-amd64 (ویندوز ۶۴ بیتی روی AMD64، معروف به x86_64، Intel64 و EM64T)
win-arm64 (ویندوز ۶۴ بیتی روی ARM64، معروف به AArch64)
win32 (همهی موارد دیگر - بهطور مشخص، sys.platform برگردانده میشود)
سیستمعامل مبتنی بر POSIX:
linux-x86_64
macosx-15.5-arm64
macosx-26.0-universal2 (macOS روی Apple Silicon یا Intel)
android-24-arm64_v8a
برای سایر سکوهای غیر POSIX، در حال حاضر فقط
sys.platformرا برمیگرداند.
- sysconfig.is_python_build()¶
اگر مفسر پایتونِ در حال اجرا از کد منبع ساختهشده باشد و از محل ساخت خود اجرا شود، نه از محلی که در اثر مثلاً اجرای
make installیا نصب از طریق یک نصبکنندهی دودویی به وجود آمده است،Trueبرمیگرداند.
- sysconfig.parse_config_h(fp[, vars])¶
یک پرونده به سبک
config.hرا تجزیه میکند.fp یک شیء شبهپرونده است که به پروندهای شبیه
config.hاشاره میکند.یک دیکشنری شامل جفتهای نام/مقدار برگردانده میشود. اگر یک دیکشنری اختیاری بهعنوان آرگومان دوم ارسال شود، بهجای یک دیکشنری جدید از آن استفاده میشود و با مقادیر خواندهشده از پرونده بهروزرسانی میشود.
- sysconfig.get_config_h_filename()¶
مسیر
pyconfig.hرا برمیگرداند.
- sysconfig.get_makefile_filename()¶
مسیر
Makefileرا برمیگرداند.
استفاده از خط فرمان¶
میتوانید از sysconfig بهعنوان یک اسکریپت با گزینهی -m پایتون استفاده کنید:
$ python -m sysconfig
Platform: "macosx-10.4-i386"
Python version: "3.2"
Current installation scheme: "posix_prefix"
Paths:
data = "/usr/local"
include = "/Users/tarek/Dev/svn.python.org/py3k/Include"
platinclude = "."
platlib = "/usr/local/lib/python3.2/site-packages"
platstdlib = "/usr/local/lib/python3.2"
purelib = "/usr/local/lib/python3.2/site-packages"
scripts = "/usr/local/bin"
stdlib = "/usr/local/lib/python3.2"
Variables:
AC_APPLE_UNIVERSAL_BUILD = "0"
AIX_GENUINE_CPLUSPLUS = "0"
AR = "ar"
ARFLAGS = "rc"
...
این فراخوانی اطلاعات برگرداندهشده توسط get_platform()، get_python_version()، get_path() و get_config_vars() را در خروجی استاندارد چاپ خواهد کرد.