Что такое python launcher

Abstract

This PEP describes a Python launcher for the Windows platform. A Python launcher is a single executable which uses a number of heuristics to locate a Python executable and launch it with a specified command line.

Rationale

Unix-like operating systems (referred to simply as «Unix» in this PEP) allow scripts to be executed as if they were executable images by examining the script for a «shebang» line which specifies the actual executable to be used to run the script. This is described in detail in the evecve(2) man page [1] and while user documentation will be created for this feature, for the purposes of this PEP that man page describes a valid shebang line.

Additionally, these operating systems provide symbolic-links to Python executables in well-known directories. For example, many systems will have a link /usr/bin/python which references a particular version of Python installed under the operating-system. These symbolic links allow Python to be executed without regard for where Python it actually installed on the machine (eg., without requiring the path where Python is actually installed to be referenced in the shebang line or in the PATH.) PEP 394 ‘The «python» command on Unix-Like Systems’ [2] describes additional conventions for more fine-grained specification of a particular Python version.

These 2 facilities combined allow for a portable and somewhat predictable way of both starting Python interactively and for allowing Python scripts to execute. This PEP describes an implementation of a launcher which can offer the same benefits for Python on the Windows platform and therefore allows the launcher to be the executable associated with ‘.py’ files to support multiple Python versions concurrently.

Specification

This PEP specifies features of the launcher; a prototype implementation is provided in [3] which will be distributed together with the Windows installer of Python, but will also be available separately (but released along with the Python installer). New features may be added to the launcher as long as the features prescribed here continue to work.

Installation

The launcher is installed into the Windows directory (see discussion below) if installed by a privileged user. The stand-alone installer asks for an alternative location of the installer, and adds that location to the user’s PATH.

The installation in the Windows directory is a 32-bit executable (see discussion); the standalone installer may also offer to install 64-bit versions of the launcher.

The launcher installation is registered in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersion\SharedDLLs with a reference counter. It contains a version resource matching the version number of the pythonXY.dll with which it is distributed. Independent installations will overwrite older version of the launcher with newer versions. Stand-alone releases use a release level of 0x10 in FIELD3 of the CPython release on which they are based.

Python Script Launching

The launcher is restricted to launching Python scripts. It is not intended as a general-purpose script launcher or shebang processor.

The launcher supports the syntax of shebang lines as described in [1], including all restrictions listed.

The launcher supports shebang lines referring to Python executables with any of the (regex) prefixes «/usr/bin/», «/usr/local/bin» and «/usr/bin/env *», as well as binaries specified without

For example, a shebang line of ‘#! /usr/bin/python’ should work even though there is unlikely to be an executable in the relative Windows directory «\usr\bin». This means that many scripts can use a single shebang line and be likely to work on both Unix and Windows without modification.

The launcher will support fully-qualified paths to executables. While this will make the script inherently non-portable, it is a feature offered by Unix and would be useful for Windows users in some cases.

The launcher will be capable of supporting implementations other than CPython, such as jython and IronPython, but given both the absence of common links on Unix (such as «/usr/bin/jython») and the inability for the launcher to automatically locate the installation location of these implementations on Windows, the launcher will support this via customization options. Scripts taking advantage of this will not be portable (as these customization options must be set to reflect the configuration of the machine on which the launcher is running) but this ability is nonetheless considered worthwhile.

On Unix, the user can control which specific version of Python is used by adjusting the links in /usr/bin to point to the desired version. As the launcher on Windows will not use Windows links, customization options (exposed via both environment variables and INI files) will be used to override the semantics for determining what version of Python will be used. For example, while a shebang line of «/usr/bin/python2» will automatically locate a Python 2.x implementation, an environment variable can override exactly which Python 2.x implementation will be chosen. Similarly for «/usr/bin/python» and «/usr/bin/python3». This is specified in detail later in this PEP.

Shebang line parsing

If the first command-line argument does not start with a dash (‘-‘) character, an attempt will be made to open that argument as a file and parsed for a shebang line according to the rules in [1]:

Once parsed, the command will be categorized according to the following rules:

The use of ‘virtual’ shebang lines is encouraged as this should allow for portable shebang lines to be specified which work on multiple operating systems and different installations of the same operating system.

Configuration file

Virtual commands in shebang lines

Customized Commands

For example, if an INI file has the contents:

Python Version Qualifiers

Some of the features described allow an optional Python version qualifier to be used.

A version qualifier starts with a major version number and can optionally be followed by a period (‘.’) and a minor version specifier. If the minor qualifier is specified, it may optionally be followed by «-32» to indicate the 32bit implementation of that version be used. Note that no «-64» qualifier is necessary as this is the default implementation (see below).

If no minor version qualifiers are found, the environment variable PY_PYTHON (where is the current major version qualifier as determined above) can be set to specify the full version. If no such option is found, the launcher will enumerate the installed Python versions and use the latest minor release found for the major version, which is likely, although not guaranteed, to be the most recently installed version in that family.

Command-line handling

Only the first command-line argument will be checked for a shebang line and only if that argument does not start with a ‘-‘.

If the only command-line argument is «-h» or «—help», the launcher will print a small banner and command-line usage, then pass the argument to the default Python. This will cause help for the launcher being printed followed by help for Python itself. The output from the launcher will clearly indicate the extended help information is coming from the launcher and not Python.

All other arguments will be passed untouched to the child Python process.

Process Launching

The launcher creates a subprocess to start the actual interpreter. See Discussion below for the rationale.

Discussion

It may be surprising that the launcher is installed into the Windows directory, and not the System32 directory. The reason is that the System32 directory is not on the Path of a 32-bit process running on a 64-bit system. However, the Windows directory is always on the path.

The launcher that is installed into the Windows directory is a 32-bit executable so that the 32-bit CPython installer can provide the same binary for both 32-bit and 64-bit Windows installations.

Ideally, the launcher process would execute Python directly inside the same process, primarily so the parent of the launcher process could terminate the launcher and have the Python interpreter terminate. If the launcher executes Python as a sub-process and the parent of the launcher terminates the launcher, the Python process will be unaffected.

Another hurdle is the support for alternative Python implementations using the «customized commands» feature described above, where loading the command dynamically into a running executable is not possible.

Given these considerations, the launcher will execute its command in a child process, remaining alive while the child process is executing, then terminate with the same exit code as returned by the child. To address concerns regarding the termination of the launcher not killing the child, the Win32 Job API will be used to arrange so that the child process is automatically killed when the parent is terminated (although children of that child process will continue as is the case now.) As this Windows API is available in Windows XP and later, this launcher will not work on Windows 2000 or earlier.

References

Copyright

This document has been placed in the public domain.

Источник

Что такое python launcher

Что такое python launcher. Смотреть фото Что такое python launcher. Смотреть картинку Что такое python launcher. Картинка про Что такое python launcher. Фото Что такое python launcher

Python core development news and information.

Monday, July 11, 2011

A Python Launcher For Windows

Mark Hammond (author of pywin32 and long-time supporter of Python on Windows) has written PEP 397, which describes a new launcher for Python on Windows. Vinay Sanjip (author of the standard library logging module) has recently created an implementation of the launcher, downloadable from https://bitbucket.org/vinay.sajip/pylauncher/downloads

Windows users should consider downloading the launcher and testing it, to help the Python developers iron out any remaining issues. The launcher is packaged as a standalone application, and will support currently available versions of Python. The intention is that once the launcher is finalised, it will be included as part of Python 3.3 (although it will remain available as a standalone download for users of earlier versions).

Some Details About the Launcher

The full specification of the behaviour of the launcher is given in PEP 397. To summarise the basic principles:

Simple Usage Instructions

To specify that a script must use Python 2, simply add:

as the first line of the script. (This is a Unix-compatible form. If you don’t need Unix compatibility, #!python2 will do).

If on the other hand, you want to specify that a script must use Python 3, add:

You can also start the Python interpreter using any of the following commands:

For this to work, the py.exe executable must be on your path. This is automatic with the launchsys version of the installer, but the install directory ( C:\Program Files\Python Launcher) must be added manually to PATH with launcher.msi.

Further Reading

The following email threads on python-dev cover some of the key discussions:

Источник

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

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

В отличие от большинства систем и служб Unix, Windows не включает поддерживаемую системой установку Python. Чтобы сделать Python доступным, команда CPython в течение многих лет собирала установщики Windows (пакеты MSI) с каждым релизом. Данные установщики в первую очередь предназначены для добавления установки Python для каждого пользователя, при этом основной интерпретатор и библиотека используются одним пользователем. Установщик также можно установить для всех пользователей одного компьютера, а для локальных дистрибутивов приложения доступен отдельный 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 — это легкие установки, предназначенные для систем непрерывной интеграции. Они используются для создания пакетов Python или запуска скриптов, но они не обновляются и не имееют инструментов пользовательского интерфейса.

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

3.1. Полный установщик¶

3.1.1. Шаги установки¶

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

Что такое python launcher. Смотреть фото Что такое python launcher. Смотреть картинку Что такое python launcher. Картинка про Что такое python launcher. Фото Что такое python launcher

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

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

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

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

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

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

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

3.1.3. Установка без пользовательского интерфейса¶

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

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

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

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

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

3.1.4. Установка без скачивания¶

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

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

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

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

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

«Восстановить» проверит все файлы, которые были установлены с использованием текущих настроек, и заменит все, которые были удалены или изменены.

3.2. Пакет Microsoft Store¶

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

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

Чтобы установить пакет, убедитесь, что у вас установлены последние обновления Windows 10, и выполните поиск в приложении Microsoft Store по запросу «Python 3.8». Убедитесь, что выбранное приложение опубликовано Python Software Foundation, и установите его.

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

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

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

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

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

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

3.3. Пакеты nuget.org¶

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

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

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

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

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

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

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

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

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

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

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

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

3.4.1. Приложение Python¶

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

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

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

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

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

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

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

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

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

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

3.6.1. Экскурс: установка переменных окружения¶

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

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

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

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

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

louis/software/faq/q1.html Установка переменных среды, Луи Дж. Фарруджа

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

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

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

3.7. Режим UTF-8¶

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

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

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

Когда включен режим UTF-8:

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

3.8. Python запускальщик для Windows¶

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

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

Установка запускальщика изначально была указана в PEP 397.

3.8.1. Начало¶

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

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

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

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

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

Вы должны увидеть, что запускается последняя версия Python 2.x.

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

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

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

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

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

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

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

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

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

3.8.1.4. Из файловых ассоциаций¶

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

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

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

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

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

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

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

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

3.8.4. Настройка¶

3.8.4.1. Настройка через файлы INI¶

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

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

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

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

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

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

3.8.5. Диагностика¶

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

3.9. Поиск модулей¶

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

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

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

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

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

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

3.10.1. PyWin32¶

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

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

Как я работаю с win32 от Тима Голдена Python и COM Дэвида и Пола Бодди

3.10.2. cx_Freeze¶

3.10.3. WConio¶

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

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

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

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

Python + Windows + distutils + SWIG + gcc MinGW или «Создание расширений Python на C/C++ с помощью SWIG и их компиляция с помощью MinGW gcc под Windows» или «Установка расширения Python с distutils и без Microsoft Visual C++» Себастьяна Соваж, 2003

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *