> **Источник:** https://python-all.ru/3.2/using/windows.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 3. Использование Python в Windows

Этот документ содержит обзор особенностей поведения Windows, которые следует учитывать при использовании Python в Microsoft Windows.

## 3.1. Установка Python

В отличие от большинства систем и служб Unix, Windows не требует Python изначально и, соответственно, не предустанавливает его версию. Однако команда CPython уже много лет собирает установщики для Windows (пакеты MSI) для каждого [релиза](https://python-all.ru/3.2/using/windows.html).

В процессе развития Python некоторые платформы, которые ранее поддерживались, больше не поддерживаются (из-за отсутствия пользователей или разработчиков). Обратитесь к [**PEP 11**](https://python-all.ru/3.2/using/windows.html) для получения подробной информации о всех неподдерживаемых платформах.

- До версии 2.5 Python всё ещё был совместим с Windows 95, 98 и ME (но уже выдавал предупреждение об устаревании при установке). Начиная с Python 2.6 (и всех последующих выпусков) эта поддержка была прекращена, и новые версии, как ожидается, работают только на семействе Windows NT.
- [Windows CE](https://python-all.ru/3.2/using/windows.html) всё ещё поддерживается.
- Установщик [Cygwin](https://python-all.ru/3.2/using/windows.html) также предлагает установить [интерпретатор Python](https://python-all.ru/3.2/using/windows.html); он находится в разделе «Interpreters». (см. [исходный код пакета Cygwin](ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/mirrors/cygnus/release/python), [релизы сопровождающего](https://python-all.ru/3.2/using/windows.html))

Подробную информацию о платформах с предварительно скомпилированными установщиками см. в [Python for Windows (and DOS)](https://python-all.ru/3.2/using/windows.html).

> **См. также**
>
> **[Python на XP](https://python-all.ru/3.2/using/windows.html)**
>
> «7 минут до "Hello World!"» автор: Ричард Дулинг, 2006
>
> **[Установка в Windows](https://python-all.ru/3.2/using/windows.html)**
>
> в «
>
> [Dive into Python: Python from novice to pro](https://python-all.ru/3.2/using/windows.html)
>
> » Марк Пилигрим, 2004, ISBN 1-59059-356-1
>
> **[Для пользователей Windows](https://python-all.ru/3.2/using/windows.html)**
>
> в «Installing Python» в «
>
> [A Byte of Python](https://python-all.ru/3.2/using/windows.html)
>
> » Сваруп C H, 2003

## 3.2. Альтернативные пакеты

Помимо стандартного дистрибутива CPython, существуют модифицированные пакеты, включающие дополнительную функциональность. Ниже приведён список популярных версий и их ключевые особенности:

**[ActivePython](https://python-all.ru/3.2/using/windows.html)**

Установщик с поддержкой нескольких платформ, документация, PyWin32

**[Enthought Python Distribution](https://python-all.ru/3.2/using/windows.html)**

Популярные модули (например, PyWin32) с соответствующей документацией, набор инструментов для создания расширяемых приложений Python.

Обратите внимание, что эти пакеты, скорее всего, установят *более старые* версии Python.

## 3.3. Настройка Python

Чтобы Python работал безупречно, возможно, придётся изменить некоторые настройки окружения в Windows.

### 3.3.1. Отступление: настройка переменных окружения

В Windows есть встроенный диалог для изменения переменных среды (следующее руководство применимо к классическому виду XP): щёлкните правой кнопкой мыши значок вашего компьютера (обычно находится на рабочем столе и называется «Мой компьютер») и выберите *Свойства*. Затем откройте вкладку *Дополнительно* и нажмите кнопку *Переменные среды*.

Кратко, ваш путь:

> *Мой компьютер ‣ Свойства ‣ Дополнительно ‣ Переменные среды*

В этом диалоге можно добавлять или изменять пользовательские и системные переменные. Чтобы изменить системные переменные, нужен полный доступ к компьютеру (т.е. права администратора).

Ещё один способ добавить переменные в окружение – использовать команду **set**:

```text
set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
```

Чтобы сделать эту настройку постоянной, можно добавить соответствующую команду в `autoexec.bat`. **msconfig** – это графический интерфейс к этому файлу.

Просмотреть переменные окружения можно и проще: командная строка автоматически раскрывает строки, заключённые в знаки процента:

```text
echo %PATH%
```

Подробнее об этом поведении см. **set /?**.

> **См. также**
>
> **[http://support.microsoft.com/kb/100843](https://python-all.ru/3.2/using/windows.html)**
>
> Переменные среды в Windows NT
>
> **[http://support.microsoft.com/kb/310519](https://python-all.ru/3.2/using/windows.html)**
>
> Как управлять переменными среды в Windows XP
>
> **[http://www.chem.gla.ac.uk/~louis/software/faq/q1.html](https://python-all.ru/3.2/using/windows.html)**
>
> Настройка переменных среды, Луи Дж. Фарруджа

### 3.3.2. Поиск исполняемого файла Python

Помимо использования автоматически созданного пункта меню «Пуск» для интерпретатора Python, может потребоваться запустить Python в командной строке DOS. Чтобы это работало, необходимо задать переменную окружения `%PATH%`, включив в неё каталог дистрибутива Python, отделив его точкой с запятой от других записей. Пример переменной может выглядеть так (предполагается, что первые две записи – это значения по умолчанию Windows):

```text
C:\WINDOWS\system32;C:\WINDOWS;C:\Python25
```

Ввод **python** в командной строке теперь запускает интерпретатор Python. Таким образом, можно также выполнять скрипты с параметрами командной строки; см. документацию [*Command line*](https://python-all.ru/3.2/using/cmdline.html#using-on-cmdline).

### 3.3.3. Поиск модулей

Python обычно хранит свою библиотеку (и, соответственно, папку site-packages) в каталоге установки. Так, если вы установили Python в `C:\Python\`, библиотека по умолчанию будет находиться в `C:\Python\Lib\`, а сторонние модули должны храниться в `C:\Python\Lib\site-packages\`.

Вот как формируется [`sys.path`](https://python-all.ru/3.2/library/sys.html#sys.path) в Windows:

- В начале добавляется пустая запись, соответствующая текущей директории.
- Если существует переменная окружения [`PYTHONPATH`](https://python-all.ru/3.2/using/cmdline.html#envvar-PYTHONPATH), как описано в [*Переменные среды*](https://python-all.ru/3.2/using/cmdline.html#using-on-envvars), её записи добавляются следующими. Обратите внимание: в Windows пути в этой переменной должны разделяться точкой с запятой, чтобы отличать их от двоеточия, используемого в идентификаторах дисков (`C:\` и т.д.).
- Дополнительные «пути приложений» можно добавить в реестр как подразделы `\SOFTWARE\Python\PythonCore\version\PythonPath` как в ветке `HKEY_CURRENT_USER`, так и `HKEY_LOCAL_MACHINE`. Подразделы, значением которых по умолчанию являются строки путей, разделённые точкой с запятой, приведут к добавлению каждого пути в [`sys.path`](https://python-all.ru/3.2/library/sys.html#sys.path). (Обратите внимание, что все известные установщики используют только HKLM, поэтому HKCU обычно пуста.)
- Если задана переменная окружения [`PYTHONHOME`](https://python-all.ru/3.2/using/cmdline.html#envvar-PYTHONHOME), она считается «домашним каталогом Python». В противном случае путь к основному исполняемому файлу Python используется для поиска «опознавательного файла» (`Lib\os.py`), чтобы определить «домашний каталог Python». Если домашний каталог найден, соответствующие подкаталоги добавляются в [`sys.path`](https://python-all.ru/3.2/library/sys.html#sys.path) (`Lib`, `plat-win` и т.д.) на основе этой папки. В противном случае основной путь Python строится из PythonPath, хранящегося в реестре.
- Если не удаётся найти домашний каталог Python, не указана [`PYTHONPATH`](https://python-all.ru/3.2/using/cmdline.html#envvar-PYTHONPATH) в окружении и не найдены записи в реестре, используется путь по умолчанию с относительными записями (например, `.\Lib;.\plat-win` и т.д.).

Конечный результат всего этого:

- При запуске `python.exe` или любого другого .exe в главном каталоге Python (установленной версии или непосредственно из каталога PCbuild) основной путь определяется, а основные пути в реестре игнорируются. Другие «пути приложений» в реестре всегда считываются.
- Когда Python размещается в другом .exe (другая директория, встраивание через COM и т.д.), «домашний каталог Python» не определяется, поэтому используется основной путь из реестра. Другие «пути приложений» в реестре всегда считываются.
- Если Python не может найти свой домашний каталог и нет реестра (например, замороженный .exe, какая-то очень странная установка), вы получаете путь с некоторыми путями по умолчанию, но относительными.

### 3.3.4. Выполнение скриптов

Скрипты Python (файлы с расширением `.py`) по умолчанию выполняются **python.exe**. Эта программа открывает терминал, который остаётся открытым, даже если программа использует графический интерфейс. Если этого не требуется, используйте расширение `.pyw` – тогда скрипт будет по умолчанию выполняться **pythonw.exe** (оба исполняемых файла находятся в корневом каталоге установки Python). При этом окно терминала при запуске не отображается.

Можно также настроить выполнение всех скриптов `.py` с помощью **pythonw.exe**, используя стандартные средства, например (может потребоваться права администратора):

1. Откройте командную строку.
2. Свяжите правильную группу файлов со скриптами `.py`:

   ```text
   assoc .py=Python.File
   ```
3. Перенаправьте все файлы Python на новый исполняемый файл:

   ```text
   ftype Python.File=C:\Path\to\pythonw.exe "%1" %*
   ```

## 3.4. Дополнительные модули

Хотя Python стремится быть переносимым между всеми платформами, существуют функции, уникальные для Windows. Ряд модулей, как в стандартной библиотеке, так и внешних, а также фрагменты кода позволяют использовать эти возможности.

Стандартные модули, специфичные для Windows, описаны в [*Специфичные службы MS Windows*](https://python-all.ru/3.2/library/windows.html#mswin-specific-services).

### 3.4.1. PyWin32

Модуль [PyWin32](https://python-all.ru/3.2/using/windows.html) от Марка Хаммонда – это набор модулей для расширенной поддержки Windows. Он включает утилиты для:

- [Компонентная объектная модель](https://python-all.ru/3.2/using/windows.html) (COM)
- Вызовы Win32 API
- Реестр
- Журнал событий
- [Microsoft Foundation Classes](https://python-all.ru/3.2/using/windows.html) (MFC) пользовательские интерфейсы

[PythonWin](https://python-all.ru/3.2/using/windows.html) – это пример MFC-приложения, поставляемого с PyWin32. Это встраиваемая среда разработки со встроенным отладчиком.

> **См. также**
>
> **[Win32: как мне...?](https://python-all.ru/3.2/using/windows.html)**
>
> Тим Голден
>
> **[Python и COM](https://python-all.ru/3.2/using/windows.html)**
>
> Дэвид и Пол Бодди

### 3.4.2. Py2exe

[Py2exe](https://python-all.ru/3.2/using/windows.html) – это расширение [`distutils`](https://python-all.ru/3.2/library/distutils.html#module-distutils) (см. [*Extending Distutils*](https://python-all.ru/3.2/distutils/extending.html#extending-distutils)), которое упаковывает скрипты Python в исполняемые программы Windows (файлы `*.exe`). После этого можно распространять приложение без необходимости устанавливать Python пользователям.

### 3.4.3. WConio

Поскольку расширенный уровень управления терминалом Python, [`curses`](https://python-all.ru/3.2/library/curses.html#module-curses), ограничен системами, подобными Unix, существует также библиотека, эксклюзивная для Windows: Windows Console I/O для Python.

[WConio](https://python-all.ru/3.2/using/windows.html) – это обёртка для `CONIO.H` из Turbo-C, используемая для создания текстовых пользовательских интерфейсов.

## 3.5. Компиляция Python в Windows

Если вы хотите скомпилировать CPython самостоятельно, первым делом нужно получить [исходный код](https://python-all.ru/3.2/using/windows.html). Можно загрузить исходный код последнего релиза или просто взять свежую [копию из репозитория](https://python-all.ru/3.2/devguide/setup/index.html#checking-out-the-code).

Для Microsoft Visual C++, компилятора, которым собираются официальные выпуски Python, в дереве исходных кодов содержатся файлы решений/проектов. Смотрите `readme.txt` в соответствующих каталогах:

| Каталог | Версия MSVC | Версия Visual Studio |
| --- | --- | --- |
| `PC/VC6/` | 6.0 | 97 |
| `PC/VS7.1/` | 7.1 | 2003 |
| `PC/VS8.0/` | 8.0 | 2005 |
| `PCbuild/` | 9.0 | 2008 |

Обратите внимание, что не все эти каталоги сборки полностью поддерживаются. Прочитайте примечания к выпуску, чтобы узнать, с какой версией компилятора собраны официальные выпуски для вашей версии.

Общую информацию о процессе сборки можно найти в `PC/readme.txt`.

Для модулей-расширений обратитесь к [*Сборка расширений C и C++ в Windows*](https://python-all.ru/3.2/extending/windows.html#building-on-windows).

> **См. также**
>
> **[Python + Windows + distutils + SWIG + gcc MinGW](https://python-all.ru/3.2/using/windows.html)**
>
> или «Создание расширений Python на C/C++ с помощью SWIG и компиляция с MinGW gcc под Windows» или «Установка расширения Python с помощью distutils и без Microsoft Visual C++» от Sébastien Sauvage, 2003
>
> **[MingW – расширения Python](https://python-all.ru/3.2/using/windows.html)**
>
> Трент Аптед и др., 2007

## 3.6. Прочие ресурсы

> **См. также**
>
> **[Программирование на Python в Win32](https://python-all.ru/3.2/using/windows.html)**
>
> «Help for Windows Programmers» Марк Хаммонд и Энди Робинсон, O’Reilly Media, 2000, ISBN 1-56592-621-8
>
> **[Руководство по Python для Windows](https://python-all.ru/3.2/using/windows.html)**
>
> Аманда Бирмингем, 2004
