![](/user_photo/_userpic.png)
Что такое модуль sys
Модуль sys предоставляет программисту набор функций, которые дают информацию о том, как интерпретатор Python взаимодействует с операционной системой.
Модуль sys даёт следующую информацию:
Какая версия Питона запущена.
Путь к интерпретатору Python, исполняющему текущий скрипт.
Параметры командной строки, используемые при запуске на выполнение скрипта.
Флаги, установленные интерпретатором.
Представление значений с плавающей точкой.
Многое другое.
Модуль sys часто используют с модулем os. С помощью sys получают нужную информацию об операционной системе, чтобы избежать непредвиденных ошибок, а с помощью os взаимодействуют с ней (работа с файлами, запуск программ на выполнение, обработка путей и так далее).
Как подключить библиотеку
Все библиотеки (модули) в Python 3 подключаются с помощью команды «import имя библиотеки». Существуют разные варианты подключения, используемые при определённых обстоятельствах:
import sys — Такой способ используется, если в вашем проекте могут использоваться такие же имена переменных или функций, как и в библиотеке. При таком подключении вызов функций или переменных из модуля выполняется так: «sys.имя_функции».
from sys import * — Способ используется тогда, когда программист уверен, что пересечений имён нет. При вызове методов или функций не нужно ставить префикс «sys.», что уменьшает количество кода. Звёздочку можно заменить на имена конкретных функций, перечисленные через запятую. Это позволяет импортировать не весь модуль, а лишь некоторые его части.
import sys as s — При такой записи название «sys» заменяется на «s». Способ используют, чтобы заменить длинное название модуля на более короткое и удобное, это позволяет и уменьшить количество кода, и избежать пересечения имён. Правда sys и так достаточно коротко.
Функции и константы модуля sys
Библиотека sys позволяет программисту получать информацию об интерпретаторе Python и операционной системе, работать с вводом и выводом, менять параметры модуля и обрабатывать возникающие ошибки.
Информация о системных параметрах
sys.dllhandle
Целое число, которое определяет дескриптор динамически подключаемой библиотеки Python. Работает только в операционной системе Windows.
Дескриптор — это указатель на область памяти. По этому адресу располагается DLL Python. Вот пример использования. Определим указатель и по нему узнаем путь до DLL. Для этого понадобится ещё одна библиотека pywin32, которую установим с помощью pip install pywin32. Подключается она с помощью import win32api:
import sys
import win32api
print(sys.dllhandle)
print(win32api.GetModuleFileName(sys.dllhandle))
1407778816
C:\Users\all-python\AppData\Local\Programs\Python\Python36-32\python36.dll
sys.exec_prefix
Строка, которая показывает, в какой каталог установлен Python. (обычно это «/usr/local»).
Если используется виртуальная среда, значение sys.exec_prefix будет изменено на каталог виртуальной среды. В этом случае узнать путь установки Python можно с помощью base_exec_prefix.
import sys
print(sys.exec_prefix)
print(sys.base_exec_prefix)
d:\python\example\env
C:\Users\all-python\AppData\Local\Programs\Python\Python38-32
sys.executable
Строка, показывающая абсолютный путь к двоичному исполняемому файлу интерпретатора Python.
Если по какой-то причине определить путь к интерпретатору нельзя, sys.executable будет пустой строкой или None.
Вот пример её вывода:
C:\Users\all-python\AppData\Local\Programs\Python\Python38-32\python.exe
sys.getfilesystemencoding()
Функция возвращает кодировку системы, которая используется для преобразования имён файлов из Unicode в байты. Для лучшей совместимости нужно всегда использовать строки, хотя имена файлов в виде байтов тоже поддерживаются.
Разные операционные системы используют различные кодировки:
При режиме UTF-8 кодировка на любой платформе всегда «utf-8».
В Mac OS X используется кодировка «utf-8».
В Windows используется «utf-8» или «mbcs», это зависит от настроек системы.
Примечания:
В Python 3.2 результатом getfilesystemencoding() больше не может быть None.
С версии Python 3.6 больше не гарантируется, что Windows вернёт кодировку «mbcs».
В Python 3.7 в режиме UTF-8 кодировка всегда «utf-8».