Документация Python неофициальный перевод
Содержание страницы

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

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

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

В отличие от большинства систем и служб Unix, Windows не требует Python изначально и, соответственно, не предустанавливает его версию. Однако команда CPython уже много лет собирает установщики для Windows (пакеты MSI) для каждого релиза.

В процессе развития Python некоторые платформы, которые ранее поддерживались, больше не поддерживаются (из-за отсутствия пользователей или разработчиков). Обратитесь к PEP 11 для получения подробной информации о всех неподдерживаемых платформах.

См. Python для Windows для получения подробной информации о платформах с предварительно собранными установщиками.

См. также

Python на XP
«7 минут до "Hello World!"» автор: Ричард Дулинг, 2006
Установка в Windows
в «Dive into Python: Python from novice to pro» Марк Пилигрим, 2004, ISBN 1-59059-356-1
Для пользователей Windows
в «Installing Python» в «A Byte of Python» Сваруп C H, 2003

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

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

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

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

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

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

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

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

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

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

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

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

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

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

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

echo %PATH%

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

См. также

http://support.microsoft.com/kb/100843
Переменные среды в Windows NT
http://support.microsoft.com/kb/310519
Как управлять переменными среды в Windows XP
http://www.chem.gla.ac.uk/~louis/software/faq/q1.html
Настройка переменных среды, Луи Дж. Фарруджа

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

Изменено в версии 3.3.

Помимо использования автоматически созданного пункта меню «Пуск» для интерпретатора Python, может потребоваться запустить Python в командной строке. Начиная с Python 3.3, в установщике есть опция, которая настраивает это автоматически.

На экране «Customize Python 3.3» можно включить опцию «Add python.exe to search path», чтобы установщик поместил вашу установку в %PATH%. Это позволит набирать python для запуска интерпретатора. Таким образом, вы также сможете выполнять сценарии с параметрами командной строки; см. документацию Командная строка.

Если вы не включили эту опцию при установке, всегда можно повторно запустить установщик и выбрать её.

Альтернатива – вручную изменить %PATH%, следуя указаниям в разделе Экскурс: Настройка переменных среды. Необходимо задать переменную окружения %PATH%, включив в неё каталог вашего дистрибутива Python, отделяя точкой с запятой от других записей. Пример переменной может выглядеть так (предполагая, что первые две записи – стандартные для Windows):

C:\WINDOWS\system32;C:\WINDOWS;C:\Python33

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

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

Вот как формируется sys.path в Windows:

  • В начале добавляется пустая запись, соответствующая текущей директории.
  • Если существует переменная окружения PYTHONPATH, как описано в Переменные среды, её записи добавляются следующими. Обратите внимание: в Windows пути в этой переменной должны разделяться точкой с запятой, чтобы отличать их от двоеточия, используемого в идентификаторах дисков (C:\ и т.д.).
  • Дополнительные «пути приложений» можно добавить в реестр как подразделы \SOFTWARE\Python\PythonCore\version\PythonPath как в ветке HKEY_CURRENT_USER, так и HKEY_LOCAL_MACHINE. Подразделы, значением которых по умолчанию являются строки путей, разделённые точкой с запятой, приведут к добавлению каждого пути в sys.path. (Обратите внимание, что все известные установщики используют только HKLM, поэтому HKCU обычно пуста.)
  • Если задана переменная окружения PYTHONHOME, она считается «домашним каталогом Python». В противном случае путь к основному исполняемому файлу Python используется для поиска «опознавательного файла» (Lib\os.py), чтобы определить «домашний каталог Python». Если домашний каталог найден, соответствующие подкаталоги добавляются в sys.path (Lib, plat-win и т.д.) на основе этой папки. В противном случае основной путь Python строится из PythonPath, хранящегося в реестре.
  • Если не удаётся найти домашний каталог Python, не указана PYTHONPATH в окружении и не найдены записи в реестре, используется путь по умолчанию с относительными записями (например, .\Lib;.\plat-win и т.д.).

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

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

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

Начиная с Python 3.3, в состав Python входит программа-загрузчик, которая упрощает запуск скриптов Python. Дополнительную информацию см. в разделе Python Launcher for Windows.

3.3.5. Запуск скриптов без программы-загрузчика PythonExecuting scripts without the Python launcher

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

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

  1. Откройте командную строку.

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

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

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

3.4. Средство запуска Python для WindowsPython Launcher for Windows

Новое в версии 3.3.

Программа-загрузчик Python для Windows – это служебная программа, которая помогает находить и запускать разные версии Python. Она позволяет скриптам (или командной строке) указать предпочтительную версию Python и затем находит и запускает эту версию.

3.4.1. Начало работыGetting started

3.4.1.1. Из командной строкиFrom the command-line

Убедитесь, что программа-загрузчик находится в переменной PATH – в зависимости от способа установки она может уже быть там, но проверьте на всякий случай, если это не так.

В командной строке выполните следующую команду:

py

Должна запуститься последняя установленная версия Python 2.x – её можно завершить обычным способом, а все дополнительные аргументы командной строки будут переданы напрямую Python.

Если установлено несколько версий Python 2.x (например, 2.6 и 2.7), вы заметите, что запустилась Python 2.7. Чтобы запустить Python 2.6, попробуйте команду:

py -2.6

Если установлен Python 3.x, попробуйте команду:

py -3

Должна запуститься последняя версия Python 3.x.

3.4.1.2. Из скриптаFrom a script

Создадим тестовый скрипт Python – создайте файл с именем hello.py со следующим содержимым

#! python
import sys
sys.stdout.write("hello from Python %s\n" % (sys.version,))

Из каталога, в котором находится hello.py, выполните команду:

py hello.py

Вы должны заметить, что выводится номер версии вашей последней установки Python 2.x. Теперь попробуйте изменить первую строку на:

#! python3

Повторный запуск команды теперь должен вывести информацию о последней версии Python 3.x. Как и в приведённых выше примерах с командной строкой, можно указать более точный квалификатор версии. Предположим, у вас установлен Python 2.6. Попробуйте изменить первую строку на #! python2.6, и вы должны увидеть информацию о версии 2.6.

3.4.1.3. Через ассоциации файловFrom file associations

Программа-загрузчик должна быть связана с файлами Python (т.е. файлами .py, .pyw, .pyc, .pyo) при установке. Это означает, что при двойном щелчке по одному из этих файлов в проводнике Windows будет использоваться программа-загрузчик, и поэтому можно использовать те же возможности, описанные выше, чтобы указать версию, которую следует использовать.

Ключевое преимущество этого в том, что один загрузчик может одновременно поддерживать несколько версий Python в зависимости от содержимого первой строки.

3.4.2. Shebang-строкиShebang Lines

Если первая строка файла скрипта начинается с #!, она называется «shebang»-строкой. Linux и другие Unix-подобные операционные системы имеют встроенную поддержку таких строк, и они обычно используются в таких системах для указания способа выполнения скрипта. Эта программа-загрузчик предоставляет те же возможности для использования с Python-скриптами в Windows, и приведённые выше примеры демонстрируют их применение.

Чтобы обеспечить переносимость shebang-строк в сценариях Python между Unix и Windows, этот загрузчик поддерживает ряд «виртуальных» команд для указания того, какой интерпретатор использовать. Поддерживаемые виртуальные команды:

  • /usr/bin/env python
  • /usr/bin/python
  • /usr/local/bin/python
  • python

Например, если первая строка вашего сценария начинается с

#! /usr/bin/python

Будет найдена и использована версия Python по умолчанию. Поскольку многие скрипты Python, написанные для работы в Unix, уже содержат эту строку, такие скрипты будут работать с программой-загрузчиком без изменений. Если вы пишете новый скрипт в Windows, который, как вы надеетесь, будет полезен в Unix, следует использовать shebang-строку, начинающуюся с /usr.

3.4.3. Аргументы в shebang-строкахArguments in shebang lines

Shebang-строки также могут указывать дополнительные параметры, передаваемые интерпретатору Python. Например, если у вас есть shebang-строка:

#! /usr/bin/python -v

Тогда Python будет запущен с опцией -v

3.4.4. НастройкаCustomization

3.4.4.1. Настройка через INI-файлыCustomization via INI files

Программа-загрузчик будет искать два .ini-файла: py.ini в каталоге «данных приложения» текущего пользователя (т.е. в каталоге, возвращаемом вызовом функции Windows SHGetFolderPath с CSIDL_LOCAL_APPDATA) и py.ini в том же каталоге, где находится программа-загрузчик. Эти же .ini-файлы используются как для «консольной» версии загрузчика (т.е. py.exe), так и для «оконной» версии (т.е. pyw.exe).

Настройка, указанная в «каталоге приложения», имеет приоритет над настройками рядом с исполняемым файлом, поэтому пользователь, у которого может не быть прав на запись в .ini-файл рядом с программой-загрузчиком, может переопределить команды в этом глобальном .ini-файле.

3.4.4.2. Настройка версий Python по умолчаниюCustomizing default Python versions

В некоторых случаях в команду можно включить уточнитель версии, чтобы указать, какая версия Python будет использоваться командой. Уточнитель версии начинается с номера старшей версии и может опционально содержать точку («.») и указатель младшей версии. Если указана младшая версия, за ней может опционально следовать «-32» для обозначения 32-разрядной реализации этой версии.

Например, shebang-строка #!python не содержит квалификатора версии, тогда как #!python3 содержит квалификатор версии, указывающий только старшую версию.

Если в команде не найдено ни одного квалификатора версии, можно задать переменную окружения PY_PYTHON, чтобы указать квалификатор версии по умолчанию – значение по умолчанию – «2». Обратите внимание, что это значение может указывать только старшую версию (например, «2») или квалификатор major.minor (например, «2.6»), или даже major.minor-32.

Если не найдено ни одного квалификатора младшей версии, можно задать переменную окружения PY_PYTHON{major} (где {major} – это текущий квалификатор старшей версии, определённый выше) для указания полной версии. Если такой параметр не найден, программа-загрузчик перечислит установленные версии Python и будет использовать последний младший выпуск для данной старшей версии, который, скорее всего (хотя это не гарантируется), является самой последней установленной версией в этом семействе.

В 64-разрядной Windows, где установлены и 32-разрядная, и 64-разрядная реализации одной и той же версии Python (major.minor), всегда будет предпочитаться 64-разрядная версия. Это справедливо как для 32-разрядной, так и для 64-разрядной реализации загрузчика – 32-разрядный загрузчик предпочтёт запустить 64-разрядную установку Python указанной версии, если она доступна. Это сделано для того, чтобы поведение загрузчика можно было предсказать, зная только, какие версии установлены на ПК, независимо от порядка их установки (то есть без знания того, какая версия – 32- или 64-разрядная – Python и соответствующего загрузчика была установлена последней). Как уже отмечалось, для изменения этого поведения можно использовать необязательный суффикс «-32» в спецификаторе версии.

Примеры:

  • Если не заданы соответствующие параметры, команды python и python2 будут использовать последнюю установленную версию Python 2.x, а команда python3 – последнюю установленную версию Python 3.x.
  • Команды python3.1 и python2.7 не будут учитывать никакие параметры, поскольку версии полностью указаны.
  • Если PY_PYTHON=3, то команды python и python3 будут использовать последнюю установленную версию Python 3.
  • Если PY_PYTHON=3.1-32, команда python будет использовать 32-битную реализацию версии 3.1, тогда как команда python3 будет использовать последнюю установленную версию Python (PY_PYTHON не учитывалась, так как была указана старшая версия).
  • Если заданы PY_PYTHON=3 и PY_PYTHON3=3.1, то команды python и python3 будут использовать именно версию 3.1.

Помимо переменных окружения, те же настройки можно задать в INI-файле, используемом программой запуска. Раздел в INI-файле называется [defaults], а имя ключа будет совпадать с именем переменной окружения без префикса PY_ (обратите внимание, что имена ключей в INI-файле нечувствительны к регистру). Содержимое переменной окружения переопределяет настройки, указанные в INI-файле.

Например:

  • Установка PY_PYTHON=3.1 эквивалентна INI-файлу, содержащему:
[defaults]
python=3.1
  • Установка PY_PYTHON=3 и PY_PYTHON3=3.1 эквивалентна INI-файлу, содержащему:
[defaults]
python=3
python3=3.1

3.4.5. ДиагностикаDiagnostics

Если задана переменная окружения PYLAUNCH_DEBUG (с любым значением), программа запуска будет выводить диагностическую информацию в stderr (то есть в консоль). Хотя эта информация одновременно является и подробной, и краткой, она позволит увидеть, какие версии Python были найдены, почему выбрана конкретная версия и точная командная строка, использованная для запуска целевого Python.

3.5. Дополнительные модулиAdditional modules

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

Стандартные модули, специфичные для Windows, описаны в Специфичные службы MS Windows.

3.5.1. PyWin32

Модуль PyWin32 от Марка Хаммонда – это набор модулей для расширенной поддержки Windows. Он включает утилиты для:

PythonWin – это пример MFC-приложения, поставляемого с PyWin32. Это встраиваемая среда разработки со встроенным отладчиком.

См. также

Win32: как мне...?
Тим Голден
Python и COM
Дэвид и Пол Бодди

3.5.2. cx_Freeze

cx_Freeze – это расширение distutils (см. Extending Distutils), которое упаковывает скрипты Python в исполняемые программы Windows (файлы *.exe). После этого можно распространять приложение без необходимости установки Python пользователями.

3.5.3. WConio

Поскольку расширенный уровень управления терминалом Python, curses, ограничен системами, подобными Unix, существует также библиотека, эксклюзивная для Windows: Windows Console I/O для Python.

WConio – это обёртка для CONIO.H из Turbo-C, используемая для создания текстовых пользовательских интерфейсов.

3.6. Компиляция Python в WindowsCompiling Python on Windows

Если вы хотите скомпилировать CPython самостоятельно, первым делом нужно получить исходный код. Можно загрузить исходный код последнего релиза или просто взять свежую копию из репозитория.

Исходное дерево содержит решение для сборки и файлы проектов для 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
PC/VS9.0/ 9.0 2008
PCbuild/ 10.0 2010

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

Проверьте PCbuild/readme.txt для получения общей информации о процессе сборки.

Для модулей-расширений обратитесь к Сборка расширений C и C++ в Windows.

См. также

Python + Windows + distutils + SWIG + gcc MinGW
или «Создание расширений Python на C/C++ с помощью SWIG и компиляция с MinGW gcc под Windows» или «Установка расширения Python с помощью distutils и без Microsoft Visual C++» от Sébastien Sauvage, 2003
MingW – расширения Python
Трент Аптед и др., 2007

3.7. Другие ресурсыOther resources

См. также

Программирование на Python в Win32
«Help for Windows Programmers» Марк Хаммонд и Энди Робинсон, O’Reilly Media, 2000, ISBN 1-56592-621-8
Руководство по Python для Windows
Аманда Бирмингем, 2004
PEP 397 – загрузчик Python для Windows
Предложение о включении лаунчера в дистрибутив Python.