windows.md
1> **Источник:** https://python-all.ru/2.7/using/windows.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 3. Использование Python в Windows89Этот документ содержит обзор особенностей поведения Windows, которые следует учитывать при использовании Python в Microsoft Windows.1011## 3.1. Установка Python1213В отличие от большинства систем и служб Unix, Windows не требует Python изначально и, соответственно, не предустанавливает его версию. Однако команда CPython уже много лет собирает установщики для Windows (пакеты MSI) для каждого [релиза](https://python-all.ru/2.7/using/windows.html).1415В процессе развития Python некоторые платформы, которые ранее поддерживались, больше не поддерживаются (из-за отсутствия пользователей или разработчиков). Обратитесь к [**PEP 11**](https://python-all.ru/2.7/using/windows.html) для получения подробной информации о всех неподдерживаемых платформах.1617- DOS и Windows 3.x устарели начиная с Python 2.0, а код, специфичный для этих систем, был удалён в Python 2.1.18- До версии 2.5 Python всё ещё был совместим с Windows 95, 98 и ME (но уже выдавал предупреждение об устаревании при установке). Начиная с Python 2.6 (и всех последующих выпусков) эта поддержка была прекращена, и новые версии, как ожидается, работают только на семействе Windows NT.19- [Windows CE](https://python-all.ru/2.7/using/windows.html) всё ещё поддерживается.20- Установщик [Cygwin](https://python-all.ru/2.7/using/windows.html) также предлагает установить интерпретатор Python (см. [исходные коды пакетов Cygwin](ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/mirrors/cygnus/release/python), [релизы мейнтейнера](https://python-all.ru/2.7/using/windows.html))2122Подробную информацию о платформах с предварительно скомпилированными установщиками см. в [Python for Windows (and DOS)](https://python-all.ru/2.7/using/windows.html).2324> **См. также**25>26> **[Python на XP](https://python-all.ru/2.7/using/windows.html)**27>28> «7 минут до "Hello World!"» автор: Ричард Дулинг, 200629>30> **[Установка в Windows](https://python-all.ru/2.7/using/windows.html)**31>32> в «[Dive into Python: Python from novice to pro](https://python-all.ru/2.7/using/windows.html)» Марк Пилигрим, 2004, ISBN 1-59059-356-133>34> **[Для пользователей Windows](https://python-all.ru/2.7/using/windows.html)**35>36> в «Installing Python» в «[A Byte of Python](https://python-all.ru/2.7/using/windows.html)» Сваруп C H, 20033738## 3.2. Альтернативные сборки3940Помимо стандартного дистрибутива CPython, существуют модифицированные пакеты, включающие дополнительную функциональность. Ниже приведён список популярных версий и их ключевые особенности:4142**[ActivePython](https://python-all.ru/2.7/using/windows.html)**4344Установщик с поддержкой нескольких платформ, документация, PyWin324546**[Enthought Python Distribution](https://python-all.ru/2.7/using/windows.html)**4748Популярные модули (например, PyWin32) с соответствующей документацией, набор инструментов для создания расширяемых приложений Python.4950Обратите внимание, что эти пакеты, скорее всего, установят *более старые* версии Python.5152## 3.3. Настройка Python5354Чтобы Python работал безупречно, возможно, придётся изменить некоторые настройки окружения в Windows.5556### 3.3.1. Отступление: установка переменных окружения5758В Windows есть встроенный диалог для изменения переменных среды (следующее руководство применимо к классическому виду XP): щёлкните правой кнопкой мыши значок вашего компьютера (обычно находится на рабочем столе и называется «Мой компьютер») и выберите Свойства. Затем откройте вкладку Дополнительно и нажмите кнопку Переменные среды.5960Кратко, ваш путь:6162> Мой компьютер ‣ Свойства ‣ Дополнительно ‣ Переменные среды6364В этом диалоге можно добавлять или изменять пользовательские и системные переменные. Чтобы изменить системные переменные, нужен полный доступ к компьютеру (т.е. права администратора).6566Ещё один способ добавить переменные в окружение – использовать команду **set**:6768```text69set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib70```7172Чтобы сделать этот параметр постоянным, можно добавить соответствующую командную строку в ваш `autoexec.bat`. **msconfig** – это графический интерфейс для этого файла.7374Просмотреть переменные окружения можно и проще: командная строка автоматически раскрывает строки, заключённые в знаки процента:7576```text77echo %PATH%78```7980Подробнее об этом поведении см. **set /?**.8182> **См. также**83>84> **[https://support.microsoft.com/kb/100843](https://python-all.ru/2.7/using/windows.html)**85>86> Переменные среды в Windows NT87>88> **[https://support.microsoft.com/kb/310519](https://python-all.ru/2.7/using/windows.html)**89>90> Как управлять переменными среды в Windows XP91>92> **[https://www.chem.gla.ac.uk/~louis/software/faq/q1.html](https://python-all.ru/2.7/using/windows.html)**93>94> Настройка переменных среды, Луи Дж. Фарруджа9596### 3.3.2. Поиск исполняемого файла Python9798Кроме использования автоматически созданного пункта меню «Пуск» для интерпретатора Python, можно запускать Python из командной строки DOS. Чтобы это работало, необходимо задать переменную среды `%PATH%`, включив в неё каталог дистрибутива Python, разделяя каталоги точкой с запятой. Пример значения переменной может выглядеть так (предполагается, что первые две записи – значения Windows по умолчанию):99100```text101C:\WINDOWS\system32;C:\WINDOWS;C:\Python25102```103104Ввод **python** в командной строке теперь запускает интерпретатор Python. Таким образом, можно также выполнять скрипты с параметрами командной строки; см. документацию [Command line](https://python-all.ru/2.7/using/cmdline.html#using-on-cmdline).105106### 3.3.3. Поиск модулей107108Python обычно хранит свою библиотеку (и соответственно папку site-packages) в каталоге установки. Так, если Python был установлен в `C:\Python\`, библиотека по умолчанию будет находиться в `C:\Python\Lib\`, а сторонние модули должны храниться в `C:\Python\Lib\site-packages\`.109110Вот как формируется [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path) в Windows:111112- В начале добавляется пустая запись, соответствующая текущей директории.113- Если существует переменная окружения [`PYTHONPATH`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONPATH), как описано в [Переменные окружения](https://python-all.ru/2.7/using/cmdline.html#using-on-envvars), то её записи добавляются следом. Обратите внимание, что в Windows пути в этой переменной должны разделяться точками с запятой, чтобы отличать их от двоеточия, используемого в идентификаторах дисков (`C:\` и т.д.).114- Дополнительные «пути приложений» можно добавить в реестр как подразделы `\SOFTWARE\Python\PythonCore{version}\PythonPath` как в разделе `HKEY_CURRENT_USER`, так и в `HKEY_LOCAL_MACHINE`. Подразделы, у которых в качестве значения по умолчанию указаны строки путей, разделённые точкой с запятой, приводят к добавлению каждого пути в [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path). (Обратите внимание, что все известные установщики используют только HKLM, поэтому HKCU обычно пуст.)115- Если задана переменная окружения [`PYTHONHOME`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONHOME), она считается «домашним каталогом Python» (Python Home). В противном случае путь к главному исполняемому файлу Python используется для поиска «маркерного файла» (`Lib\os.py`), чтобы определить «Python Home». Если домашний каталог найден, соответствующие подкаталоги, добавляемые в [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path) (`Lib`, `plat-win` и т. д.), определяются относительно этого каталога. В противном случае основной путь Python строится из значения PythonPath, хранящегося в реестре.116- Если домашний каталог Python не найден, в окружении не указана переменная [`PYTHONPATH`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONPATH) и не найдены записи реестра, используется путь по умолчанию с относительными записями (например, `.\Lib;.\plat-win` и т.д.).117118Конечный результат всего этого:119120- При запуске `python.exe` или любого другого .exe в основной директории Python (установленной версии или непосредственно из каталога PCbuild) основной путь определяется, а основные пути в реестре игнорируются. Другие «пути приложений» в реестре всегда считываются.121- Когда Python размещается в другом .exe (другая директория, встраивание через COM и т.д.), «домашний каталог Python» не определяется, поэтому используется основной путь из реестра. Другие «пути приложений» в реестре всегда считываются.122- Если Python не может найти свой домашний каталог и нет реестра (например, замороженный .exe, какая-то очень странная установка), вы получаете путь с некоторыми путями по умолчанию, но относительными.123124### 3.3.4. Выполнение скриптов125126Скрипты Python (файлы с расширением `.py`) по умолчанию выполняются программой **python.exe**. Эта программа открывает терминал, который остаётся открытым, даже если программа использует графический интерфейс. Если этого не требуется, используйте расширение `.pyw` – тогда скрипт будет по умолчанию выполняться программой **pythonw.exe** (оба исполняемых файла находятся в корневом каталоге установки Python). Это подавляет появление окна терминала при запуске.127128Можно также настроить выполнение всех скриптов `.py` с помощью **pythonw.exe**, задав это через стандартные средства, например (может потребоваться права администратора):1291301. Откройте командную строку.1312. Сопоставьте правильную группу файлов скриптам `.py`:132133 ```text134 assoc .py=Python.File135 ```1363. Перенаправьте все файлы Python на новый исполняемый файл:137138 ```text139 ftype Python.File=C:\Path\to\pythonw.exe "%1" %*140 ```141142## 3.4. Дополнительные модули143144Хотя Python стремится быть переносимым между всеми платформами, существуют функции, уникальные для Windows. Ряд модулей, как в стандартной библиотеке, так и внешних, а также фрагменты кода позволяют использовать эти возможности.145146Стандартные модули, специфичные для Windows, описаны в [Специфичные службы MS Windows](https://python-all.ru/2.7/library/windows.html#mswin-specific-services).147148### 3.4.1. PyWin32149150Модуль [PyWin32](https://python-all.ru/2.7/using/windows.html) от Марка Хаммонда – это набор модулей для расширенной поддержки Windows. Он включает утилиты для:151152- [Компонентная объектная модель](https://python-all.ru/2.7/using/windows.html) (COM)153- Вызовы Win32 API154- Реестр155- Журнал событий156- [Microsoft Foundation Classes](https://python-all.ru/2.7/using/windows.html) (MFC) пользовательские интерфейсы157158[PythonWin](https://python-all.ru/2.7/using/windows.html) – это пример MFC-приложения, поставляемого с PyWin32. Это встраиваемая среда разработки со встроенным отладчиком.159160> **См. также**161>162> **[Win32: Как мне…?](https://python-all.ru/2.7/using/windows.html)**163>164> Тим Голден165>166> **[Python и COM](https://python-all.ru/2.7/using/windows.html)**167>168> Дэвид и Пол Бодди169170### 3.4.2. Py2exe171172[Py2exe](https://python-all.ru/2.7/using/windows.html) – это расширение [`distutils`](https://python-all.ru/2.7/library/distutils.html#module-distutils) (см. [Расширение Distutils](https://python-all.ru/2.7/distutils/extending.html#extending-distutils)), которое упаковывает скрипты Python в исполняемые программы Windows (файлы `*.exe`). После этого вы можете распространять своё приложение, не требуя от пользователей установки Python.173174### 3.4.3. WConio175176Поскольку расширенный уровень работы с терминалом Python, [`curses`](https://python-all.ru/2.7/library/curses.html#module-curses), ограничен Unix-подобными системами, существует библиотека, эксклюзивная для Windows: Windows Console I/O for Python.177178[WConio](https://python-all.ru/2.7/using/windows.html) – это обёртка для `CONIO.H` от Turbo-C, используемая для создания текстовых пользовательских интерфейсов.179180## 3.5. Компиляция Python в Windows181182Если вы хотите скомпилировать CPython самостоятельно, первым делом нужно получить [исходный код](https://python-all.ru/2.7/using/windows.html). Можно загрузить исходный код последнего релиза или просто взять свежую [копию из репозитория](https://python-all.ru/2.7/devguide/setup.html#getting-the-source-code).183184Для Microsoft Visual C++ (компилятора, с помощью которого собираются официальные выпуски Python) дерево исходных кодов содержит файлы решений/проектов. Просмотрите `readme.txt` в соответствующих каталогах:185186| Каталог | Версия MSVC | Версия Visual Studio |187| --- | --- | --- |188| `PC/VC6/` | 6.0 | 97 |189| `PC/VS7.1/` | 7.1 | 2003 |190| `PC/VS8.0/` | 8.0 | 2005 |191| `PCbuild/` | 9.0 | 2008 |192193Обратите внимание, что не все эти каталоги сборки полностью поддерживаются. Прочитайте примечания к выпуску, чтобы узнать, с какой версией компилятора собраны официальные выпуски для вашей версии.194195Обратитесь к `PC/readme.txt` за общей информацией о процессе сборки.196197Для модулей-расширений обратитесь к [Сборка расширений C и C++ в Windows](https://python-all.ru/2.7/extending/windows.html#building-on-windows).198199> **См. также**200>201> **[Python + Windows + distutils + SWIG + gcc MinGW](https://python-all.ru/2.7/using/windows.html)**202>203> или «Создание расширений Python на C/C++ с помощью SWIG и компиляция с MinGW gcc под Windows» или «Установка расширения Python с помощью distutils и без Microsoft Visual C++» от Sébastien Sauvage, 2003204>205> **[MingW – расширения Python](https://python-all.ru/2.7/using/windows.html)**206>207> Трент Аптед и др., 2007208209## 3.6. Другие ресурсы210211> **См. также**212>213> **[Программирование на Python в Win32](https://python-all.ru/2.7/using/windows.html)**214>215> «Help for Windows Programmers» Марк Хаммонд и Энди Робинсон, O’Reilly Media, 2000, ISBN 1-56592-621-8216>217> **[Руководство по Python для Windows](https://python-all.ru/2.7/using/windows.html)**218>219> Аманда Бирмингем, 2004220