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

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

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

Как указано в PEP 11, версия Python поддерживает только платформу Windows, в то время как Microsoft рассматривает платформу под расширенной поддержкой. Это означает, что Python 3.8 поддерживает Windows Vista и более новую версию. Если требуется поддержка Windows XP, установите Python 3.4.

Для Windows доступно несколько различных установщиков, каждый из которых имеет определенные преимущества и недостатки.

Полная установка содержит все компоненты и является лучшим вариантом для разработчиков, использующих Python для любого вида проекта.

Пакет Microsoft Store - это простая установка Python, которая подходит для запуска сценариев и пакетов, а также для использования IDLE или других сред разработки. Она требует Windows 10, но может быть безопасно установлена без повреждения других программ. Он также предоставляет множество удобных команд для запуска Python и его инструментов.

Пакеты nuget.org представляют собой легкие установки, предназначенные для систем непрерывной интеграции. Это может быть используемый, чтобы построить пакеты Python или сценарии пробега, но не обновляемо и не имеет никаких инструментов пользовательского интерфейса.

Встраиваемый пакет представляет собой минимальный пакет Python, пригодный для встраивания в более крупное приложение.

3.1. Полная установка

3.1.1. Инсталляционные шаги

Доступны для загрузки четыре установщика Python 3.8 - по два для 32-разрядной и 64-разрядной версий интерпретатор. web installer - маленькая начальная загрузка, и он автоматически загрузит необходимые компоненты по мере необходимости. offline installer включает компоненты, необходимые для установки по умолчанию, и требует подключения к интернету только для дополнительных функций. Другие способы избежать загрузки во время установки см. в разделе Установка без загрузки.

После запуска программы установки можно выбрать один из двух вариантов:

../_images/win_installer.png

Если выбрать «Установить сейчас»:

  • Вы будете, not должен быть администратором (если системное обновление для библиотеки во время выполнения C не требуется, или вы устанавливаете Python лаунчер для Windows для всех пользователей)
  • Python будет установлен в ваш пользовательский каталог
  • Python лаунчер для Windows, будет установлен согласно выбору у основания первой страницы,
  • стандартная библиотека, набор тестов, запускальщик и pip будут установлены
  • если отобрано, устанавливать справочник будет добавлен к вашим коротким путям PATH,
  • только будет видимо для нынешнего пользователя

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

Чтобы выполнить установку для всех пользователей, выберите «Настроить установку». В данном случае:

  • Вы можете быть обязаны обеспечивать административные полномочия или одобрение,
  • Python будет установлен в каталог Program Files,
  • Python лаунчер для Windows будет установлен в дополнительные функции каталога Windows
  • может быть отобран во время установки
  • стандартная библиотека может быть предварительно собрана к bytecode
  • если отобрано, устанавливать справочник будет добавлен к системе, короткие пути PATH
  • Шарткаты доступны для всех пользователей

3.1.2. Снятие ограничения MAX_PATH

Исторически Windows имеет ограниченную длину пути до 260 символов. Это означает, что пути длиннее, чем это, не будут разрешаться, и в результате возникнут ошибки.

В последних версиях Windows это ограничение может быть расширено примерно до 32000 символов. Вашему администратору нужно будет активировать групповую политику «Enable Win32 long paths» или установить LongPathsEnabled на 1 в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem.

Это позволяет функции open(), модулю os и большинству других функций пути принимать и возвращать пути более 260 символов.

После изменения вышеуказанной опции дальнейшая настройка не требуется.

Изменено в версии 3.6: Поддержка длинных путей включена в Python.

3.1.3. Установка без UI

Все параметры, доступные в пользовательском интерфейсе установщика, также можно указать из командной строки, что позволяет установщикам со сценариями реплицировать установку на многих компьютерах без взаимодействия с пользователем. Эти параметры также могут быть установлены без подавления пользовательского интерфейса для изменения некоторых значений по умолчанию.

Чтобы полностью скрыть инсталлятор UI и установить Python тихо, передайте выбор /quiet. Чтобы пропустить взаимодействие с пользователем, но при этом отобразить ход выполнения и ошибки, передайте параметр /passive. Параметр /uninstall может быть передан для немедленного начала удаления Python - запрос отображаться не будет.

Все остальные параметры передаются как name=value, где значение обычно равно 0 для отключения функции, 1 для включения функции или пути. Полный список доступных опций приведен ниже.

Имя Описание По умолчанию
InstallAllUsers Выполнить общесистемную установку. 0
TargetDir Каталог установки Выбранный на основе InstallAllUsers
DefaultAllUsersTargetDir Каталог установки по умолчанию для всех пользователей %ProgramFiles%\Python X.Y или %ProgramFiles(x86)%\Python X.Y
DefaultJustForMeTargetDir Каталог установки по умолчанию для установки только для меня %LocalAppData%\Programs\PythonXY или %LocalAppData%\Programs\PythonXY-32 или %LocalAppData%\Programs\PythonXY-64
DefaultCustomTargetDir Пользовательский каталог установки по умолчанию, отображаемый в UI (пусто)
AssociateFiles Создайть файловые ассоциации, если | 1 лаунчер также установлен. |
CompileAll Компилировать все .py файлы в .pyc. 0
PrependPath Добавление каталогов установки tи Scripts в PATH и .PY в PATHEXT 0
Shortcuts Создать ярлыки для интерпретатора, документации и IDLE, если установлен. 1
Include_doc Установить Python мануал 1
Include_debug Установить отладочные бинарники 0
Include_dev Установка сборочных заголовков и библиотек 1
Include_exe Установить python.exe и связанные файлы 1
Include_launcher Установить Python лаунчер для Windows. 1
InstallLauncherAllUsers Установить Python лаунчер для Windows для всех пользователей. 1
Include_lib Установить стандартную библиотеку и модули расширения 1
Include_pip Установите комплектные pip и setuptools 1
Include_symbols Установка отладочных символов (*.pdb) 0
Include_tcltk Усановить поддержку Tcl/Tk и IDLE 1
Include_test Установить стандартную библиотеку набора тестов 1
Include_tools Установка скриптов утилиты 1
LauncherOnly Только устанавливает лаунчер. Это переопределит большинство других вариантов. 0
SimpleInstall Отключить большинство UI 0
SimpleInstallDescription Настраиваемое сообщение, отображаемое при использовании упрощенного UI установки. (пусто)

Например, чтобы тихо установить дефолт, общесистемную установку Python, вы могли использовать следующую команду (от поднятой командной строки):

python-3.8.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0

Чтобы пользователи могли легко установить личную копию Python без набора тестов, можно предоставить ярлык с помощью следующей команды. Это вызовет упрощенную начальную страницу и запретит настройку:

python-3.8.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0
    SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite."

(Следует отметить, что при исключении средства запуска также отсутствуют сопоставления файлов и рекомендуется устанавливать только для каждого пользователя, если имеется также общесистемная установка, включающая средство запуска.

Перечисленные выше опции также могут быть предоставлены в файле с именем unattend.xml наряду с исполняемым файлом. Этот файл определяет список параметров и значений. Если значение указано как атрибут, оно будет преобразовано в число, если это возможно. Значения, предоставляемые в качестве текста элемента, всегда остаются как строки. В этом примере файл задает те же параметры, что и в предыдущем примере:

<Options>
    <Option Name="InstallAllUsers" Value="no" />
    <Option Name="Include_launcher" Value="0" />
    <Option Name="Include_test" Value="no" />
    <Option Name="SimpleInstall" Value="yes" />
    <Option Name="SimpleInstallDescription">Just for me, no test suite</Option>
</Options>

3.1.4. Установка без загрузки

Поскольку некоторые особенности Python не включены в начальную загрузку инсталлятора, выбирание тех особенностей может потребовать подключения к интернету. Чтобы избежать этой потребности, все возможные компоненты могут быть загружены по требованию, чтобы создать полный layout, который больше не будет требовать подключения к интернету независимо от отобранных особенностей. Следует отметить, что эта загрузка может быть больше, чем требуется, но при выполнении большого количества установок очень полезно иметь локально кэшированную копию.

Выполните следующую команду из командной строки, чтобы загрузить все возможные требуемые файлы. Не забудьте заменить python-3.8.0.exe фактическим именем программы установки и создать макеты в собственных каталогах, чтобы избежать коллизий между файлами с одним и тем же именем.

python-3.8.0.exe /layout [optional target directory]

Вы можете также определить выбор /quiet скрыть дисплей прогресса.

3.1.5. Изменение установки

Как только Python был установлен, вы можете добавить или удалить особенности через инструмент программ и особенностей, который является частью Windows. Выберите вход Python и выберите «Удаление/Изменение», чтобы открыть инсталлятор в режиме обслуживания.

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

Функция восстановления проверит все файлы, которые должны быть установлены с использованием текущих параметров, и заменит все файлы, которые были удалены или изменены.

«Удаление» удалит Python полностью, за исключением Python лаунчер для Windows, у которого есть его собственный вход в программах и особенностях.

3.2. Пакет Microsoft Store

Добавлено в версии 3.7.2.

Пакет Microsoft Store - легко устанавливаемый Python интерпретатор, который предназначен главным образом для интерактивного использования, например, студентами.

Чтобы установить пакет, убедитесь в наличии последних обновлений Windows 10 и найдите в приложении Microsoft Store «Python 3.8». Гарантируйте, что приложение, которое вы выбираете, выпущено фондом программного обеспечения Python, и установите его.

Предупреждение

Python всегда будет доступен бесплатно в Microsoft Store. Если вас попросят оплатить его, вы не выбрали правильный пакет.

После установки Python можно запустить, найдя его в Start. Кроме того, он будет доступен в любой командной строке или в сеансе PowerShell путем ввода python. Кроме того, pip и IDLE могут быть используемый путем ввода pip или idle. IDLE также можно найти в окне пуск.

Все три команды также доступны с суффиксами номеров версий, например, python3.exe и python3.x.exe, а также python.exe (где 3.x - конкретная версия, которую требуется запустить, например 3.8). Откройте «Управление псевдонимами выполнения приложения» с помощью кнопки «Пуск», чтобы выбрать версию Python, связанную с каждой командой. Рекомендуется убедиться, что pip и idle соответствуют выбранной версии python.

Виртуальные среды могут быть созданы с помощью python -m venv, активированы и используемый как обычные.

Если вы установили другую версию Python и добавили ее в свою переменную PATH, она будет доступна как python.exe, а не из Microsoft Store. Для доступа к новой установке используйте команду python3.exe или python3.x.exe.

Пусковая установка py.exe обнаружит эту установку Python, но предпочтет установки от традиционного установщика.

Чтобы удалить питон, откройте параметры настройки и используйте приложения и особенности, или иначе найдите, что Python в начале и щелчке правой кнопкой мыши выбирает удаление. Удаление приведет к удалению всех пакетов, установленных непосредственно в эту установку Python, но не приведет к удалению виртуальных сред

3.2.1. Известные проблемы

Из-за ограничений на приложения Microsoft Store скрипты Python могут не иметь полного доступа для записи в общие расположения, такие как TEMP и реестр. Если скрипты должны изменить общие расположения, необходимо установить полную программу установки.

Для получения более подробной информации о технической основе этих ограничений, пожалуйста, обратитесь к документации Microsoft по упакованным приложения с полным доверием, в настоящее время доступные по адресу docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-behind-the-scenes

3.3. Пакеты nuget.org

Добавлено в версии 3.5.2.

nuget.org пакет - уменьшенный размер окружающая среда Python, предназначенная для использования на непрерывной интеграции, и постройте системы, у которых нет общесистемного, устанавливают Python. Хотя nuget является «диспетчером пакетов для .NET», он также прекрасно работает для пакетов, содержащих инструменты времени сборки.

Посетите nuget.org для самую свежую информацию об использовании nuget. Ниже приводится сводка, достаточная для разработчиков Python.

Инструмент командной строки nuget.exe можно загрузить непосредственно из https://aka.ms/nugetclidl, например, с помощью curl или PowerShell. С помощью инструмента устанавливается последняя версия Python для 64-разрядных или 32-разрядных машин:

nuget.exe install python -ExcludeVersion -OutputDirectory .
nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .

Чтобы выбрать определенную версию, добавьте -Version 3.x.y. Выходной каталог может быть изменен с ., и пакет будет установлен во вложенный каталог. По умолчанию подкаталогу присваивается то же имя, что и пакету, и без параметра -ExcludeVersion это имя будет включать установленную версию. Внутри подкаталога находится каталог tools, содержащий установку Python:

# Without -ExcludeVersion
> .\python.3.5.2\tools\python.exe -V
Python 3.5.2

# With -ExcludeVersion
> .\python\tools\python.exe -V
Python 3.5.2

Как правило, пакеты nuget не могут быть обновлены, и более новые версии должны устанавливаться бок о бок и указываться по полному пути. Либо удалите каталог пакета вручную и снова установите его. Многие системы CI делают это автоматически, если они не сохраняют файлы между сборками.

Наряду с каталогом tools является каталогом build\native. Это содержит файл с свойсвами python.props MSBuild, который может быть используемый в проекте C++ сослаться на Python, устанавливают. Включение параметров автоматически использует заголовки и библиотеки импорта в сборке.

Страницы информации о пакете на nuget.org www.nuget.org/packages/python для 64-битной версией и www.nuget.org/packages/pythonx86 для 32-битная версия.

3.4. Встраиваемый пакет

Добавлено в версии 3.5.

Внедренный дистрибутив представляет собой ZIP-файл, содержащий минимальную среду Python. Он предназначен для работы в рамках другого приложения, а не для прямого доступа конечных пользователей.

При извлечении встроенный дистрибутив (почти) полностью изолирован от системы пользователя, включая переменные среды, параметры системного реестра и установленные пакеты. Стандартная библиотека включена как предварительно скомпилированные и оптимизированные файлы .pyc в ZIP, а также предоставляются файлы python3.dll, python37.dll, python.exe и pythonw.exe. Tcl/tk (включая всех иждивенцев, таких как Idle), pip и Python документация не включены.

Примечание

Внедренный дистрибутив не включает в себя Microsoft C Runtime и ответственность за его предоставление лежит на установщике приложения. Время выполнения, возможно, было уже установлено на системе пользователя ранее или автоматически через Windows Update и может быть обнаружено, найдя ucrtbase.dll в системном справочнике.

Примечание

При работе в Windows 7 Python 3.8 требует установки обновления KB2533623. Встраиваемый дистрибутив не обнаруживает это обновление и может выйти из строя во время выполнения. Более поздние версии Windows включают это обновление.

Пакеты сторонних производителей должны устанавливаться программой установки приложений вместе со встроенным дистрибутивом. Использование pip для управления зависимостями, как для обычной установки Python, не поддерживается этим дистрибутивом, хотя с некоторой осторожностью может быть возможно включение и использование pip для автоматических обновлений. Как правило, сторонние пакеты должны рассматриваться как часть приложения («vendoring»), чтобы разработчик мог обеспечить совместимость с более новыми версиями перед предоставлением обновлений пользователям.

Два рекомендуемых варианта использования для этого распределения описаны ниже.

3.4.1. Применение Python

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

Использование специализированного исполняемого файла в качестве средства запуска требует некоторого кодирования, но обеспечивает наиболее прозрачный опыт для пользователей. При использовании настраиваемой программы запуска нет явных признаков того, что программа запущена на Python: можно настроить значки, указать информацию о компании и версии и правильно вести себя ассоциации файлов. В большинстве случаев пользовательская пусковая установка должна быть способна просто вызывать Py_Main с помощью жестко закодированной командной строки.

Более простой подход заключается в предоставлении пакетного файла или сгенерированного ярлыка, который непосредственно вызывает python.exe или pythonw.exe с требуемыми аргументами командной строки. В этом случае применение, будет казаться, будет Python и не его подлинным именем, и пользователи могут испытать затруднения при различении его от другого управления процессы Python или ассоциации файла.

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

3.4.2. Встраивание Python

Заявления, написанные в родном код часто, требуют некоторой формы языка сценариев, и вложенное распределение Python может быть используемый с этой целью. В общем, большая часть приложения находится в собственном коде, а некоторая часть либо вызывает python.exe, либо непосредственно использует python3.dll. В любом случае, извлечение внедренного распространения во вложенный каталог установки приложения является достаточным для обеспечения загружаемого Python интерпретатор.

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

3.5. Альтернативные связки

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

ActivePython
Инсталлятор с многоплатформенной совместимостью, документация, PyWin32
Anaconda
Научные модули (такие как numpy, scipy и pandas) и менеджер пакетов conda.
Canopy
«Комплексная среда анализа Python» с редакторами и другими инструментами разработки.
WinPython
Дистрибутив Windows с заранее созданными научными пакетами и инструментами для создания пакетов.

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

3.6. Настройка Python

Чтобы управлять Python удобно от командной строки, вы могли бы рассмотреть изменение некоторых переменных окружения по умолчанию в Windows. В то время как программа установки предоставляет возможность настройки переменных PATH и PATHEXT, это надежно только для одной системной установки. При регулярном использовании нескольких версий Python рассмотрите возможность использования Python лаунчер для Windows.

3.6.1. Exursus: задание переменных среды

Windows позволяет постоянно настраивать переменные среды как на уровне пользователя, так и на уровне системы или временно в командной строке.

Чтобы временно задать переменные среды, откройте командную строку и используйте команду set:

C:\>set PATH=C:\Program Files\Python 3.8;%PATH%
C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
C:\>python

Эти изменения применяются к любым дальнейшим командам, выполняемым на этой консоли, и наследуются всеми приложениями, запускаемыми с консоли.

Включение имени переменной в знаки процента расширится до существующего значения, позволяя добавить новое значение либо в начале, либо в конце. Изменение PATH путем добавления каталога, содержащего python.exe, в начало является обычным способом обеспечить запуск правильной версии Python.

Чтобы навсегда изменить переменные среды по умолчанию, нажмите кнопку «Пуск» и выполните поиск «изменить переменные среды» или откройте раздел свойства системы Advanced system settings и нажмите кнопку Environment Variables. В этом диалоговом окне можно добавлять или изменять пользовательские и системные переменные. Для изменения системных переменных необходим неограниченный доступ к компьютеру (т.е. права администратора).

Примечание

Windows объединит пользовательские переменные после Системных переменные, что может привести к неожиданным результатам при изменении PATH.

Переменная PYTHONPATH - используемый всеми версиями Python 2 и Python 3, таким образом, вы не должны постоянно настраивать эту переменную, если это только не включает код, который совместим со всеми вашими установленными версиями Python.

См.также

https://www.microsoft.com/en-us/wdsi/help/folder-variables
Переменные среды в Windows NT
https://technet.microsoft.com/en-us/library/cc754250.aspx
Команда SET для временного изменения переменных среды
https://technet.microsoft.com/en-us/library/cc755104.aspx
Команда SETX для постоянного изменения переменных среды
https://support.microsoft.com/en-us/help/310519/how-to-manage-environment-variables-in-windows-xp
Уравление переменными среды в Windows XP
https://www.chem.gla.ac.uk/~louis/software/faq/q1.html
Установка переменных среды, Louis J. Farrugia

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

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

Помимо использования автоматически созданного входа меню начала для переводчика Python, вы могли бы хотеть начать Python в командной строке. Установщик может настроить его для вас.

На первой странице инсталлятора выбор маркировал, «Добавьте, что Python к PATH» может быть отобран, чтобы сделать, чтобы инсталлятор добавил устанавливать местоположение в PATH. Также добавляется расположение папки Scripts\. Это позволяет ввести python для запуска интерпретатора и pip для установщика пакета. Таким образом, сценарии можно также выполнять с опциями командной строки, см. документацию Командная строка.

Если этот параметр не включен во время установки, всегда можно повторно запустить программу установки, выбрать «Modify» и включить ее. Кроме того, можно вручную изменить PATH, используя направления в Exursus: задание переменных среды. Необходимо задать переменную среды PATH для включения каталога установки Python, отделенного точкой с запятой от других записей. Пример переменной может выглядеть так (при условии, что первые две записи уже существуют):

C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Python 3.8

3.7. Режим UTF-8

Добавлено в версии 3.7.

Windows все еще использует устаревшее кодирование для системы кодировка (Страница кода ANSI). Python использует его для кодировка текстовых файлов по умолчанию (например, locale.getpreferredencoding()).

Это может вызвать проблемы, потому что UTF-8 - широко используемый в интернете и большинстве систем Unix, включая WSL (Windows Subsystem для Linux).

Вы можете использовать режим UTF-8, чтобы изменить текст по умолчанию кодировка на UTF-8. Режим UTF-8 можно включить с помощью параметра командной строки -X utf8 или переменной среды PYTHONUTF8=1. См. PYTHONUTF8 для предоставления возможности режима UTF-8 и Exursus: задание переменных среды для того, как изменить переменные окружения.

При включенном режиме UTF-8:

  • locale.getpreferredencoding() возвращает 'UTF-8' вместо системного кодировка. Эта функция является используемый для текста по умолчанию кодировка во многих местах, включая open(), Popen, Path.read_text() и т.д.
  • sys.stdin, sys.stdout и sys.stderr все используют UTF-8 в качестве своего текста кодировка.
  • Вы можете все еще использовать систему кодировка через «mbcs» кодировка.

Обратите внимание, что добавление PYTHONUTF8=1 к переменным среды по умолчанию повлияет на все приложения Python 3,7 в системе. Если у вас есть какие-либо приложения Python 3.7, которые опираются на устаревшую системную кодировку, рекомендуется временно установить переменную среды или использовать параметр командной строки -X utf8.

Примечание

Даже если режим UTF-8 отключен, Python по умолчанию использует UTF-8 в Windows для:

  • Консоль I/O включая стандартные I/O (подробнее см. PEP 528).
  • Файловая система кодировка (подробнее см. раздел PEP 529).

3.8. Python лаунчер для Windows

Добавлено в версии 3.3.

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

В отличие от переменной PATH, пусковая установка правильно выберет наиболее подходящую версию Python. Предпочтительны установки для каждого пользователя по сравнению с системными установками, а также заказы по языковой версии, а не по последней установленной версии.

Пусковая установка изначально была указана в PEP 397.

3.8.1. Начало

3.8.1.1. Из командной строки

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

Общесистемные установки Python 3.3 и позже поставят пусковую установку на ваш PATH. Пусковая установка совместима со всеми доступными версиями Python, поэтому не имеет значения, какая именно версия установлена. Чтобы проверить доступность средства запуска, выполните следующую команду в командной строке:

py

Следует обнаружить, что запущена последняя установленная версия Python - она может быть завершена в обычном режиме, и любые дополнительные указанные аргументы командной строки будут отправлены непосредственно в Python.

Если установлено несколько версий Python (например, 2.7 и 3.8), вы заметили, что Python 3.8 был запущен - чтобы запустить Python 2.7, попробуйте выполнить команду:

py -2.7

Если вы хотите последнюю версию Python 2.x, вы установили, попробуйте command:

py -2

Должна быть найдена последняя версия запуска Python 2.x.

Если отображается следующая ошибка, не установлена программа запуска:

py не распознается как внутренняя или внешняя команда, действующая
программа или пакетный файл.

Установки в расчете на пользователя Python не добавляют пусковую установку к PATH, если выбор не был отобран на установке.

3.8.1.2. Виртуальные среды

Добавлено в версии 3.5.

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

3.8.1.3. Из сценария

Давайте создадим тест, сценарий 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.

Обратите внимание, что в отличие от интерактивного использования, голый «питон» будет использовать последнюю версию Python 2.x, который вы установили. Это для обратной совместимости и для совместимости с Unix, где команда python обычно относится к Python 2.

3.8.1.4. От ассоциаций файла

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

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

3.8.2. Шибанг строки

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

Чтобы позволить линиям хижины в сценариях 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.

Любая из указанных выше виртуальных команд может быть задана с помощью явной версии (только мажорная версия или мажорная и младшая версии). Кроме того, 32-разрядная версия может быть запрошена путем добавления «-32» после младшей версии. То есть /usr/bin/python2.7-32 запросит использование 32-битного питона 2.7.

Добавлено в версии 3.7: Начиная с python launcher 3.7 можно запросить 64-разрядную версию по суффиксу «-64». Кроме того, можно указать основную архитектуру и архитектуру без минора (т.е. /usr/bin/python3-64).

/usr/bin/env форма линии шебанга имеет еще одно специальное свойство. Перед поиском установленных переводчиков Python эта форма будет искать выполнимый PATH исполняемый файл Python. Это соответствует поведению программы Unix env, которая выполняет поиск PATH.

3.8.3. Аргументы в шибанг строках

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

#! /usr/bin/python -v

Тогда Python будет начат с выбора -v

3.8.4. Настройка

3.8.4.1. Настройка с помощью INI-файлов

Два INI-файла будут найденный средством запуска - py.ini в каталоге данных приложения текущего пользователя (т.е. каталог, возвращаемый путем вызова функции Windows SHGetFolderPath с CSIDL_LOCAL_APPDATA) и py.ini в том же каталоге, что и средство запуска. Те же .ini файлы - используемый для обоих версия „пульта“ пусковой установки (т.е. py.exe) и для версии „окон“ (т.е. pyw.exe).

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

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

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

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

Если в команде не найдены квалификаторы версии, можно задать переменную среды PY_PYTHON для определения квалификатора версии по умолчанию. Если он не установлен, по умолчанию используется значение «3». Переменная может указывать любое значение, которое может быть передано в командной строке, например «3», «3.7», «3.7-32» или «3.7-64». (Обратите внимание, что опция «-64» доступна только в том случае, если пусковая установка включена в комплект поставки Python 3.7 или более новой версии.

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

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

Примеры:

  • Если соответствующие параметры не установлены, команды 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.8.5. Диагностика

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

3.9. Нахождение модулей

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

Чтобы полностью переопределить sys.path, создайте файл ._pth с таким же именем, как DLL (python37._pth) или исполняемый файл (python._pth), и укажите одну строку для каждого пути, добавляемого в sys.path. Файл, основанный на имени DLL, переопределяет файл, основанный на исполняемом файле, что позволяет ограничить пути для любой программы, загружающей среду выполнения, если это необходимо.

Когда файл существует, все переменные реестра и среды игнорируются, изолированный режим включен, и site не импортируется, если только в одной строке файла не указано import site. Пустые пути и строки, начинающиеся с #, игнорируются. Каждый путь может быть абсолютным или относительно расположения файла. Импорт инструкции, отличных от site, не разрешен, и произвольные код не могут быть указаны.

Обратите внимание, что файлы .pth (без продвижения подчеркивают) будут обрабатываться обычно модулем site, когда import site был определен.

Если файл ._pth не найден, то в Windows: заполняется файл sys.path

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

Если файл pyvenv.cfg найден рядом с основным исполняемым файлом или в каталоге на один уровень выше исполняемого файла, применяются следующие варианты:

  • Если home является абсолютным путем, а PYTHONHOME не задан, этот путь является используемый вместо пути к основному исполняемому файлу при выводе исходного местоположения.

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

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

Для тех, кто хочет объединить Python в свое приложение или дистрибутив, следующие рекомендации будут предотвращать конфликты с другими установками:

  • Включите файл ._pth вместе с исполняемым файлом, содержащим папки для включения. Это приведет к игнорированию путей, перечисленных в реестре и переменных среды, а также к игнорированию site, если в списке нет import site.
  • Если вы загружаете python3.dll или python37.dll в свой собственный исполняемый файл, явно вызвав Py_SetPath() или (по крайней мере) Py_SetProgramName() перед Py_Initialize().
  • Очистить и/или перезаписать PYTHONPATH и задать PYTHONHOME перед запуском python.exe из приложения.
  • Если вы не можете использовать предыдущие предложения (например, вы являетесь дистрибутивом, который позволяет пользователям запускать python.exe напрямую), убедитесь, что файл ориентира (Lib\os.py) существует в каталоге установки. (Обратите внимание, что он не будет обнаружен в ZIP-файле, но вместо этого будет обнаружен правильно названный ZIP-файл.

Это гарантирует, что файлы в общесистемной установке не будут иметь приоритет над копией стандартной библиотеки в комплекте с приложением. В противном случае у пользователей могут возникнуть проблемы с использованием приложения. Следует отметить, что первое предложение является наилучшим, поскольку остальные все еще могут быть подвержены нестандартным путям в реестре и пакетах сайта пользователя.

Изменено в версии 3.6:
  • Добавление ._pth поддержки файлов и удаление параметра applocal из pyvenv.cfg.
  • Добавляет pythonXX.zip в качестве потенциального ориентира при непосредственной близости к исполняемому файлу.
Не рекомендуется, начиная с версии 3.6:

Модули, определенные в регистрации под Modules (не PythonPath), могут быть импортированы importlib.machinery.WindowsRegistryFinder. Этот поиск включен в Windows в 3.6.0 и более ранних версиях, но может потребоваться явное добавление в sys.meta_path в будущем.

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

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

Стандартные модули Windows задокументированы в разделе Специальные службы MS Windows.

3.10.1. PyWin32

PyWin32 модуль Mark Hammond - это набор модулей для расширенной поддержки Windows. Сюда входят утилиты для:

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

См.также

Win32 How Do I…?
Тим Голден
Python и COM
Дэвида и Пола Бодди

3.10.2. cx_Freeze

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

3.10.3. WConio

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

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

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

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

Исходное дерево содержит построить решение и файлы проекта для Microsoft Visual Studio 2015, который является компилятором используемый, чтобы построить официальные выпуски Python. Эти файлы находятся в каталоге 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 extensions

3.12. Другие платформы

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

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