sysconfig
— Provide access to Python’s configuration information¶
Нове в версії 3.2.
Source code: Lib/sysconfig.py
Модуль sysconfig
надає доступ до конфігураційної інформації Python, наприклад до списку шляхів інсталяції та змінних конфігурації, що стосуються поточної платформи.
Конфігураційні змінні¶
A Python distribution contains a Makefile
and a pyconfig.h
header file that are necessary to build both the Python binary itself and
third-party C extensions compiled using distutils
.
sysconfig
поміщає всі змінні, знайдені в цих файлах, у словник, до якого можна отримати доступ за допомогою get_config_vars()
або get_config_var()
.
Зверніть увагу, що в Windows це набагато менший набір.
- sysconfig.get_config_vars(*args)¶
Без аргументів повертає словник усіх змінних конфігурації, що стосуються поточної платформи.
За допомогою аргументів повертає список значень, які є результатом пошуку кожного аргументу в словнику змінних конфігурації.
Для кожного аргументу, якщо значення не знайдено, поверніть
None
.
- sysconfig.get_config_var(name)¶
Повертає значення однієї змінної name. Еквівалент
get_config_vars().get(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++']
Шляхи встановлення¶
Python uses an installation scheme that differs depending on the platform and on
the installation options. These schemes are stored in sysconfig
under
unique identifiers based on the value returned by os.name
.
The schemes are used by package installers to determine where to copy files to.
Python currently supports nine schemes:
posix_prefix: схема для платформ POSIX, таких як Linux або macOS. Це типова схема, яка використовується, коли встановлено Python або компонент.
posix_home: scheme for POSIX platforms, when the home option is used. This scheme defines paths located under a specific home prefix.
posix_user: scheme for POSIX platforms, when the user option is used. This scheme defines paths located under the user’s home directory (
site.USER_BASE
).posix_venv: scheme for
Python virtual environments
on POSIX platforms; by default it is the same as posix_prefix.nt: scheme for Windows. This is the default scheme used when Python or a component is installed.
nt_user: scheme for Windows, when the user option is used.
nt_venv: scheme for
Python virtual environments
on Windows; by default it is the same as nt.venv: a scheme with values from either posix_venv or nt_venv depending on the platform Python runs on.
osx_framework_user: схема для macOS, коли використовується параметр user.
Кожна схема сама по собі складається з серії шляхів, і кожен шлях має унікальний ідентифікатор. Зараз Python використовує вісім шляхів:
stdlib: каталог, що містить файли стандартної бібліотеки Python, які не залежать від платформи.
platstdlib: каталог, що містить файли стандартної бібліотеки Python, які залежать від платформи.
platlib: каталог для файлів, що стосуються сайту та платформи.
purelib: directory for site-specific, non-platform-specific files („pure“ Python).
include: directory for non-platform-specific header files for the Python C-API.
platinclude: directory for platform-specific header files for the Python C-API.
scripts: каталог для файлів сценаріїв.
data: каталог для файлів даних.
User scheme¶
This scheme is designed to be the most convenient solution for users that don’t have write permission to the global site-packages directory or don’t want to install into it.
Files will be installed into subdirectories of site.USER_BASE
(written
as userbase
hereafter). This scheme installs pure Python modules and
extension modules in the same location (also known as site.USER_SITE
).
posix_user
¶
Path |
Каталог встановлення |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
скрипти |
|
дані |
|
nt_user
¶
Path |
Каталог встановлення |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
скрипти |
|
дані |
|
osx_framework_user
¶
Path |
Каталог встановлення |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
скрипти |
|
дані |
|
Home scheme¶
Ідея «домашньої схеми» полягає в тому, що ви створюєте та підтримуєте особистий запас модулів Python. Назва цієї схеми походить від ідеї «домашнього» каталогу в Unix, оскільки для користувачів Unix не є незвичайним зробити свій домашній каталог макетом, подібним до /usr/
або /usr /локальний/
. Цю схему може використовувати будь-хто, незалежно від операційної системи, для якої він встановлюється.
posix_home
¶
Path |
Каталог встановлення |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
скрипти |
|
дані |
|
Prefix scheme¶
«Схема префіксів» корисна, коли ви бажаєте використовувати одну інсталяцію Python для виконання побудови/інсталяції (тобто для запуску сценарію інсталяції), але інсталювати модулі в каталог модулів сторонніх розробників іншої інсталяції Python (або щось, що виглядає як інша інсталяція Python). Якщо це звучить трішки незвично, це—тому користувальницька та домашня схеми стоять раніше. Однак є принаймні два відомі випадки, коли префіксна схема буде корисною.
First, consider that many Linux distributions put Python in /usr
, rather
than the more traditional /usr/local
. This is entirely appropriate,
since in those cases Python is part of «the system» rather than a local add-on.
However, if you are installing Python modules from source, you probably want
them to go in /usr/local/lib/python2.X
rather than
/usr/lib/python2.X
.
Another possibility is a network filesystem where the name used to write to a
remote directory is different from the name used to read it: for example, the
Python interpreter accessed as /usr/local/bin/python
might search for
modules in /usr/local/lib/python2.X
, but those modules would have to
be installed to, say, /mnt/@server/export/lib/python2.X
.
posix_prefix
¶
Path |
Каталог встановлення |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
скрипти |
|
дані |
|
nt
¶
Path |
Каталог встановлення |
---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
скрипти |
|
дані |
|
Installation path functions¶
sysconfig
provides some functions to determine these installation paths.
- sysconfig.get_scheme_names()¶
Повертає кортеж, що містить усі схеми, які наразі підтримуються в
sysconfig
.
- sysconfig.get_default_scheme()¶
Повернути назву схеми за замовчуванням для поточної платформи.
Нове в версії 3.10: Ця функція раніше називалася
_get_default_scheme()
і вважалася деталлю реалізації.Змінено в версії 3.11: When Python runs from a virtual environment, the venv scheme is returned.
- sysconfig.get_preferred_scheme(key)¶
Повертає бажану назву схеми для макета встановлення, визначеного ключом.
key має бути
"prefix"
,"home"
або"user"
.Поверненим значенням є назва схеми, указана в
get_scheme_names()
. Його можна передати до функційsysconfig
, які приймають аргумент scheme, наприкладget_paths()
.Нове в версії 3.10.
Змінено в версії 3.11: When Python runs from a virtual environment and
key="prefix"
, the venv scheme is returned.
- sysconfig._get_preferred_schemes()¶
Повертає dict, що містить бажані назви схем на поточній платформі. Розробники та розповсюджувачі Python можуть додати бажані схеми до глобального значення рівня модуля
_INSTALL_SCHEMES
і змінити цю функцію, щоб повернути ці назви схем, наприклад. забезпечують різні схеми для використання системними та мовними менеджерами пакунків, тому пакунки, встановлені одним із них, не змішуються з пакетами іншого.End users should not use this function, but
get_default_scheme()
andget_preferred_scheme()
instead.Нове в версії 3.10.
- sysconfig.get_path_names()¶
Повертає кортеж, що містить усі назви шляхів, які зараз підтримуються в
sysconfig
.
- sysconfig.get_path(name[, scheme[, vars[, expand]]])¶
Повертає шлях встановлення, що відповідає шляху ім’я зі схеми встановлення під назвою схема.
name має бути значенням зі списку, який повертає
get_path_names()
.sysconfig
зберігає шляхи встановлення, що відповідають кожному імені шляху, для кожної платформи, зі змінними, які можна розширити. Наприклад, шлях stdlib для схеми nt такий:{base}/Lib
.get_path()
використовуватиме змінні, які повертаєget_config_vars()
, щоб розширити шлях. Усі змінні мають значення за замовчуванням для кожної платформи, тому можна викликати цю функцію та отримати значення за замовчуванням.Якщо вказано схему, це має бути значення зі списку, який повертає
get_scheme_names()
. В іншому випадку використовується схема за замовчуванням для поточної платформи.If vars is provided, it must be a dictionary of variables that will update the dictionary returned by
get_config_vars()
.Якщо expand має значення
False
, шлях не буде розгортатися за допомогою змінних.Якщо name не знайдено, викликайте
KeyError
.
- sysconfig.get_paths([scheme[, vars[, expand]]])¶
Повертає словник, що містить усі шляхи встановлення, що відповідають схемі встановлення. Дивіться
get_path()
для отримання додаткової інформації.Якщо схема не вказана, використовуватиметься схема за замовчуванням для поточної платформи.
Якщо надано vars, це має бути словник змінних, який оновлюватиме словник, що використовується для розширення шляхів.
Якщо expand має значення false, шляхи не розгортатимуться.
Якщо scheme не є існуючою схемою,
get_paths()
викличеKeyError
.
Інші функції¶
- sysconfig.get_python_version()¶
Повертає
MAJOR.MINOR
номер версії Python у вигляді рядка. Подібно до'%d.%d' % sys.version_info[:2]
.
- sysconfig.get_platform()¶
Повертає рядок, що ідентифікує поточну платформу.
This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by „os.uname()“), although the exact information included depends on the OS; e.g., on Linux, the kernel version isn’t particularly important.
Приклади повернених значень:
linux-i586
linux-alpha (?)
solaris-2.6-sun4u
Windows поверне одне з:
win-amd64 (64-розрядна Windows на AMD64, також x86_64, Intel64 і EM64T)
win32 (усі інші - зокрема повертається sys.platform)
macOS може повертати:
macosx-10.6-ppc
macosx-10.4-ppc64
macosx-10.3-i386
macosx-10.4-жир
Для інших платформ, відмінних від POSIX, наразі повертає лише
sys.platform
.
- sysconfig.is_python_build()¶
Повертає
True
, якщо запущений інтерпретатор Python був зібраний із вихідного коду та запускається зі свого зібраного розташування, а не з розташування, яке є результатом, наприклад, запускmake install
або встановлення через бінарний інсталятор.
- sysconfig.parse_config_h(fp[, vars])¶
Проаналізуйте файл у стилі
config.h
.fp — це файлоподібний об’єкт, що вказує на
config.h
подібний файл.Повертається словник, що містить пари ім’я/значення. Якщо додатковий словник передається як другий аргумент, він використовується замість нового словника та оновлюється значеннями, зчитаними у файлі.
- sysconfig.get_config_h_filename()¶
Повертає шлях до
pyconfig.h
.
- sysconfig.get_makefile_filename()¶
Повертає шлях до
Makefile
.
Використання sysconfig
як сценарію¶
Ви можете використовувати sysconfig
як сценарій з опцією Python -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()
.