Сообщить об ошибке.

Выбор интерпретатора для автономных приложений Python

Обратите внимание, что если вы указываете интерпретатор, а затем распространяете архив приложения, то необходимо убедиться, что используемый интерпретатор является переносимым. Средство запуска Python для Windows поддерживает наиболее распространенные формы POSIX строки shebang - #!, но есть и другие вопросы для рассмотрения:

  • Если вы используете в исполняемом архиве строку интерпретатора /usr/bin/env python или другие формы команды python, такие как /usr/bin/python, то следует учитывать, что у пользователей по умолчанию может быть как Python 2, так и Python 3. В этом случае необходимо писать код для работы под обеими версиями.
  • Если вы используете явную версию, например /usr/bin/env python3, ваше приложение не будет работать для пользователей, у которых нет этой версии. В этом случае необходимо сделать код совместимым с Python 2.
  • В исполняемом архиве невозможно указать интерпретатор как "python XY или более поздняя версия", поэтому нужно быть осторожным с использованием точной версии, например /usr/bin/env python3.7, так как нужно будет менять строку shebang для того, чтобы запустить приложение для пользователей, у которых по умолчанию стоит Python 3.5.

Как правило, в исполняемых приложениях нужно использовать с качестве интерпретатора строку запуска /usr/bin/env python3 или /usr/bin/env python2, в зависимости от того, написан ли ваш код для Python 3 или 2.

Напомним, что строка shebang в исполняемых архивах приложений указывается следующими способами.

Из командной строки добавить строку #! в архив с указанием интерпретатора в качестве команды для запуска:

$ python -m zipapp myapp -o myapp.pyz -p "/usr/bin/env python3"
$ ./myapp.pyz
<output from myapp>

Чтобы заменить строку shebang в существующем архиве, создайте измененный архив с помощью функции zipapp.create_archive():

>>> import zipapp
>>> zipapp.create_archive('old_archive.pyz', 'new_archive.pyz', '/usr/bin/python3')