> **Источник:** https://python-all.ru/2.7/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/2.7/using/windows.html).

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

- DOS и Windows 3.x устарели начиная с Python 2.0, а код, специфичный для этих систем, был удалён в Python 2.1.
- До версии 2.5 Python всё ещё был совместим с Windows 95, 98 и ME (но уже выдавал предупреждение об устаревании при установке). Начиная с Python 2.6 (и всех последующих выпусков) эта поддержка была прекращена, и новые версии, как ожидается, работают только на семействе Windows NT.
- [Windows CE](https://python-all.ru/2.7/using/windows.html) всё ещё поддерживается.
- Установщик [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))

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

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

## 3.2. Альтернативные сборки

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

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

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

**[Enthought Python Distribution](https://python-all.ru/2.7/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 /?**.

> **См. также**
>
> **[https://support.microsoft.com/kb/100843](https://python-all.ru/2.7/using/windows.html)**
>
> Переменные среды в Windows NT
>
> **[https://support.microsoft.com/kb/310519](https://python-all.ru/2.7/using/windows.html)**
>
> Как управлять переменными среды в Windows XP
>
> **[https://www.chem.gla.ac.uk/~louis/software/faq/q1.html](https://python-all.ru/2.7/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/2.7/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/2.7/library/sys.html#sys.path) в Windows:

- В начале добавляется пустая запись, соответствующая текущей директории.
- Если существует переменная окружения [`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:\` и т.д.).
- Дополнительные «пути приложений» можно добавить в реестр как подразделы `\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 обычно пуст.)
- Если задана переменная окружения [`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, хранящегося в реестре.
- Если домашний каталог Python не найден, в окружении не указана переменная [`PYTHONPATH`](https://python-all.ru/2.7/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/2.7/library/windows.html#mswin-specific-services).

### 3.4.1. PyWin32

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

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

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

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

### 3.4.2. Py2exe

[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.

### 3.4.3. WConio

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

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

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

Если вы хотите скомпилировать CPython самостоятельно, первым делом нужно получить [исходный код](https://python-all.ru/2.7/using/windows.html). Можно загрузить исходный код последнего релиза или просто взять свежую [копию из репозитория](https://python-all.ru/2.7/devguide/setup.html#getting-the-source-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/2.7/extending/windows.html#building-on-windows).

> **См. также**
>
> **[Python + Windows + distutils + SWIG + gcc MinGW](https://python-all.ru/2.7/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/2.7/using/windows.html)**
>
> Трент Аптед и др., 2007

## 3.6. Другие ресурсы

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