Как указать python версия pyinstaller использует?

Кластер как один из методов критического мышления

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

К особенностям критического мышления относят наличие трех стадий:

  • вызов,
  • осмысление,
  • рефлексия.

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

Прием кластера может применяться на любой из стадий.

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

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

Компиляция

Компилировать будем программу «блэкджек» (файл 21.py) (кому лень смотреть, привожу полный исходный код).

import random
random.shuffle(koloda)

print('Поиграем в очко?')
count = 

while True
    choice = input('Будете брать карту? y/n\n')
    if choice == 'y'
        current = koloda.pop()
        print('Вам попалась карта достоинством %d' %current)
        count += current
        if count > 21
            print('Извините, но вы проиграли')
            break
        elif count == 21
            print('Поздравляю, вы набрали 21!')
            break
        else
            print('У вас %d очков.' %count)
    elif choice == 'n'
        print('У вас %d очков и вы закончили игру.' %count)
        break

print('До новых встреч!')

Создаём в папке с программой файл setup.py с содержимым:

from cx_Freeze import setup, Executable

setup(
    name = "21",
    version = "0.1",
    description = "Blackjack",
    executables = Executable("21.py")]
)

Переходим в командную строку (обычно Пуск → Стандартные → Командная строка). Переходим в папку с программой (в моём случае D:\Dima\py). Запускаем команду C:\Python34\python.exe setup.py build (вместо C:\Python34 нужно написать папку, куда установлен python).

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

Поздравляю! В папке build теперь есть ваша папка с исполняемым файлом!

Заметьте, не файл, а папка! Все остальные файлы также нужны для работы программы (да, это недостаток cx_Freeze). К тому же, при завершении программы окно сразу закрывается (а не ждет нажатия клавиши), поэтому в конец программы нужно дописать что-то вроде:

input("Press Enter")

И скомпилировать ещё раз.

Также можно создать msi-архив командой C:\Python34\python.exe setup.py bdist_msi.

Разумеется, при компиляции более сложных программ вы можете столкнуться с более сложными проблемами.

Для их решения следует воспользоваться официальной документацией.

Capturing Windows Version Data¶

A Windows app may require a Version resource file.
A Version resource contains a group of data structures,
some containing binary integers and some containing strings,
that describe the properties of the executable.
For details see the Microsoft Version Information Structures page.

Version resources are complex and
some elements are optional, others required.
When you view the version tab of a Properties dialog,
there’s no simple relationship between
the data displayed and the structure of the resource.
For this reason PyInstaller includes the command.
It is invoked with the full path name of any Windows executable
that has a Version resource:

The command writes text that represents
a Version resource in readable form to standard output.
You can copy it from the console window or redirect it to a file.
Then you can edit the version information to adapt it to your program.
Using you can find an executable that displays the kind of
information you want, copy its resource data, and modify it to suit your package.

The version text file is encoded UTF-8 and may contain non-ASCII characters.
(Unicode characters are allowed in Version resource string fields.)
Be sure to edit and save the text file in UTF-8 unless you are
certain it contains only ASCII string values.

Your edited version text file can be given with the
option to or .
The text data is converted to a Version resource and
installed in the bundled app.

In a Version resource there are two 64-bit binary values,
and .
In the version text file these are given as four-element tuples,
for example:

filevers=(2, , 4, ),
prodvers=(2, , 4, ),

The elements of each tuple represent 16-bit values
from most-significant to least-significant.
For example the value resolves to
in hex.

You can also install a Version resource from a text file after
the bundled app has been created, using the command:

The utility reads a version text file as written
by , converts it to a Version resource,
and installs that resource in the executable_file specified.

Project details

Homepage

Meta

License: GNU General Public License v2 (GPLv2) (GPL license with a special exception which allows to use PyInstaller to build and distribute non-free programs (including commercial ones))

Author: Giovanni Bajo, Hartmut Goebel, David Vierra, David Cortesi, Martin Zibricky

Requires: Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*

Classifiers

  • Development Status

    6 — Mature

  • Environment

    Console

  • Intended Audience

    • Developers

    • Other Audience

    • System Administrators

  • License

    OSI Approved :: GNU General Public License v2 (GPLv2)

  • Natural Language

    English

  • Operating System

    • MacOS :: MacOS X

    • Microsoft :: Windows

    • POSIX

    • POSIX :: AIX

    • POSIX :: BSD

    • POSIX :: Linux

    • POSIX :: SunOS/Solaris

  • Programming Language

    • C

    • Python

    • Python :: 2

    • Python :: 2.7

    • Python :: 3

    • Python :: 3.5

    • Python :: 3.6

    • Python :: 3.7

    • Python :: Implementation :: CPython

  • Topic

    • Software Development

    • Software Development :: Build Tools

    • Software Development :: Interpreters

    • Software Development :: Libraries :: Python Modules

    • System :: Installation/Setup

    • System :: Software Distribution

    • Utilities

Достоинства и результаты применения приема

Применение кластера имеет следующие достоинства:

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

В ходе данной работы формируются и развиваются следующие умения:

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

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

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

Есть мнение? Оставьте свой комментарий:

Cython

Cython — это не просто компилятор для Python; это языковое надмножество языка Python, который поддерживает взаимодействие с C/C ++. CPython написан на C, поэтому это язык, который обычно хорошо сочетается с Python:

$ sudo apt install cython3 pkg-config

Сборка программы с помощью Cython немного сложна. Это не похоже на Nuitka, которая просто работает из коробки:

$ cython3 pystone.py --embed
$ gcc $(python3-config --includes) pystone.c -lpython3.6m -o pystone.exe


$ ./pystone.exe 1000000
Pystone(1.1.1) time for 1000000 passes = 4.8549
This machine benchmarks at 205978 pystones/second

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

Shortening the Command¶

Because of its numerous options, a full command
can become very long.
You will run the same command again and again as you develop
your script.
You can put the command in a shell script or batch file,
using line continuations to make it readable.
For example, in GNU/Linux:

pyinstaller --noconfirm --log-level=WARN \
    --onefile --nowindow \
    --add-data="README:." \
    --add-data="image1.png:img" \
    --add-binary="libfoo.so:lib" \
    --hidden-import=secret1 \
    --hidden-import=secret2 \
    --upx-dir=/usrlocalshare \
    myscript.spec

Or in Windows, use the little-known BAT file line continuation:

Mac OS X

  1. How to set up manageable Python environment on Mac OS X? Mac OS X does not have any package management system like it is in many Linux distributions. To manually compile all libraries you need for application is a pain. To ease this process you could try any of the following package management system for Mac OS X:

    • Homebrew
    • pyenv

      You would need to specify PYTHON_CONFIGURE_OPTS=»—enable-shared» when building a Python version for PyInstaller

  2. Created binary does not work on Mac OS X and I get message likeThis happens when you develop a GUI application for Mac. For GUI applications you need to use the precompiled bootloader linked with graphical Mac OS Xlibraries. You could do that with option .

  3. How to create application bundle (.app) on Mac OS X? The .app bundle is created automatically with the option.

Как скомпилировать Python код в .exe | практикум

Для начала, нам нужно установить pyinstaller с помощью pip. Пишем команду в командной строке:

pip install pyinstaller

Если вы используете Linux и у вас не установлен pip, то просто напишите команду:

apt-get install python-pip

На Windows, если вы не изменяли конфигурации установки Python, проблемы отсутствия pip у вас возникнуть не должно.

Вторым шагом будет переход в директорию с нашим проектом. Просто копируем путь и с помощью команды cd (наш путь) переходим в директорию, для Linux и Windows команда одинаковая.

Теперь давайте скомпилируем наш Python код в .exe, не будем тянуть.

Сделаем мы это с помощью установленного пакета pyinstaller.

Пишем команду:

pyinstaller -F -w -i( to set up icon on your .exe) main.py

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

  • -F – этот флаг отвечает за то, чтобы в созданной папке dist, в которой и будет храниться наш исполняемый файл не было очень много лишних файлов, модулей и т.п.
  • -w – этот флаг вам понадобится в том случае, если приложение использует tkinekt, оно блокирует создание консольного окна, если же ваше приложение консольное, вам этот флаг использовать не нужно.
  • -i – этот флаг отвечает за установку иконки на наш исполняемый файл, после флага нужно указать полный путь к иконке с указанием её имени. Например: D:\LayOut\icon.ico

Вот и всё, сегодня мы рассмотрели, как скомпилировать Python код в .exe, Если у вас остались какие-либо вопросы, пишите их в комментарии, с удовольствием отвечу.

Так же подписывайтесь на обновления сайта, тут будет ещё много интересного!

Удачи в жизни и до встречи!

Применение метода кластер

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

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

В последнем случае важно наличие у учащихся определенного опыта в его составлении

Building Mac OS X App Bundles¶

Under Mac OS X, PyInstaller always builds a UNIX executable in
.
If you specify , the output is a folder named
containing supporting files and an executable named .
If you specify , the output is a single UNIX executable
named .
Either executable can be started from a Terminal command line.
Standard input and output work as normal through that Terminal window.

If you specify with either option, the folder
also contains an OS X application named .

As you probably know, an application is a special type of folder.
The one built by PyInstaller contains a folder always named
which contains:

Use the argument to specify a custom icon for the application.
It will be copied into the folder.
(If you do not specify an icon file, PyInstaller supplies a
file with the PyInstaller logo.)

Use the argument to add a bundle identifier.
This becomes the used in code-signing
(see the PyInstaller code signing recipe
and for more detail, the Apple code signing overview technical note).

Nuitka

В Ubuntu 18.04 установить Nuitka возможно с помощью APT:

$ sudo apt update
$ sudo apt install nuitka clang

Результат выполнения бенчмарка для компилятора Nuitka:

# Сборка для GCC
$ nuitka pystone.py
$ ./pystone.exe 1000000
Pystone(1.1.1) time for 1000000 passes = 2.67537
This machine benchmarks at 373780 pystones/second

# Сборка для Clang
$ nuitka pystone.py --clang
$ ./pystone.exe 1000000
Pystone(1.1.1) time for 1000000 passes = 2.64646
This machine benchmarks at 377863 pystones/second

# Использование GCC с оптимизацией 
$ nuitka pystone.py --lto
$ ./pystone.exe 1000000
Pystone(1.1.1) time for 1000000 passes = 2.6195
This machine benchmarks at 381753 pystones/second

Как можно видеть, Nuitka позволила получить увеличение производительности на 50%, по сравнению со стандартной реализацией Python 3.

Capturing Windows Version Data¶

A Windows app may require a Version resource file.
A Version resource contains a group of data structures,
some containing binary integers and some containing strings,
that describe the properties of the executable.
For details see the Microsoft Version Information Structures page.

Version resources are complex and
some elements are optional, others required.
When you view the version tab of a Properties dialog,
there’s no simple relationship between
the data displayed and the structure of the resource.
For this reason PyInstaller includes the command.
It is invoked with the full path name of any Windows executable
that has a Version resource:

The command writes text that represents
a Version resource in readable form to standard output.
You can copy it from the console window or redirect it to a file.
Then you can edit the version information to adapt it to your program.
Using you can find an executable that displays the kind of
information you want, copy its resource data, and modify it to suit your package.

The version text file is encoded UTF-8 and may contain non-ASCII characters.
(Unicode characters are allowed in Version resource string fields.)
Be sure to edit and save the text file in UTF-8 unless you are
certain it contains only ASCII string values.

Your edited version text file can be given with the
option to or .
The text data is converted to a Version resource and
installed in the bundled app.

In a Version resource there are two 64-bit binary values,
and .
In the version text file these are given as four-element tuples,
for example:

filevers=(2, , 4, ),
prodvers=(2, , 4, ),

The elements of each tuple represent 16-bit values
from most-significant to least-significant.
For example the value resolves to
in hex.

You can also install a Version resource from a text file after
the bundled app has been created, using the command:

The utility reads a version text file as written
by , converts it to a Version resource,
and installs that resource in the executable_file specified.

Building Mac OS X App Bundles¶

Under Mac OS X, PyInstaller always builds a UNIX executable in
.
If you specify , the output is a folder named
containing supporting files and an executable named .
If you specify , the output is a single UNIX executable
named .
Either executable can be started from a Terminal command line.
Standard input and output work as normal through that Terminal window.

If you specify with either option, the folder
also contains an OS X application named .

As you probably know, an application is a special type of folder.
The one built by PyInstaller contains a folder always named
which contains:

Use the argument to specify a custom icon for the application.
It will be copied into the folder.
(If you do not specify an icon file, PyInstaller supplies a
file with the PyInstaller logo.)

Use the argument to add a bundle identifier.
This becomes the used in code-signing
(see the PyInstaller code signing recipe
and for more detail, the Apple code signing overview technical note).

Какой Python выбрать

«Питонов» существует много. Так называют и абстрактный интерфейс, и различные реализации (имплементации) Python. Главное, что следует понять: Python — это именно интерфейс. И CPython — эталонная реализация Python, которая считается стандартом де-факто. Но есть и другие реализации: Jython, PyPy, IronPython.

На Python отсутствуют ANSI, ISO или другие официальные стандарты. Их роль выполняет CPython. Эта реализация написана на C, и часто её называют просто Python. Поэтому вопрос «Как скачать Python?» обычно подразумевает установку реализации СPython.

СPython компилирует исходный код Python в байт-код, а затем интерпретирует этот байт-код, запуская его на виртуальной машине. В файлах с расширением .py хранится исходный код программ, а в файлах с расширением .pyc — «промежуточный» код.

Исходник Python можно писать хоть в «Блокноте» Windows, неважно. Цифровой код обработают все вышеупомянутые компиляторы и интерпретаторы

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


Исходный код обрабатывают разные компиляторы/интерпретаторы, но результат выполнения программы одинаков. Иллюстрация: Toptal

Using UPX¶

UPX is a free utility available for most operating systems.
UPX compresses executable files and libraries, making them smaller,
sometimes much smaller.
UPX is available for most operating systems and can compress
a large number of executable file formats.
See the UPX home page for downloads, and for the list of
supported executable formats.

A compressed executable program is wrapped in UPX
startup code that dynamically decompresses the program
when the program is launched.
After it has been decompressed, the program runs normally.
In the case of a PyInstaller one-file executable that has
been UPX-compressed, the full execution sequence is:

  • The compressed program start up in the UPX decompressor code.
  • After decompression, the program executes the PyInstaller bootloader,
    which creates a temporary environment for Python.
  • The Python interpreter executes your script.

Features

  1. Can I use PyInstaller as a cross-compiler?

    1. Can I package OS X binaries while running under Linux? This is currently not possible at all. Sorry! If you want to help out, you are very welcome.
  2. Does PyInstaller build a real installer like NSIS or InstallShield? No, despite its name (which has more to do with its historical roots), PyInstaller is used to transform a Python program into a native executable form which does not require existing Python installations to run. Building an installer program is totally outside the scope of PyInstaller.

  3. What file sizes can I expect for packaged binaries?Here are a few examples for Windows apps built with onefile:, «hello world» app: 3.3MB, «hello world» app: 4.9MB, medium sized app using , , , and others: 27.4MB apps are pretty slim, since they can compress the python libraries. apps can be 50-100% larger.
    Many Python packages conditionally import some other packages. So to achieve slim apps it is recommended create a with only dependencies required by your app.

GNU/Linux

  1. Under Linux, I get runtime dynamic linker errors, related to libc. What should I do? The executable that PyInstaller builds is not fully static, in that it still depends on the system libc. Under Linux, the ABI of GLIBC is backward compatible, but not forward compatible. So if you link against a newer GLIBC, you can’t run the resulting executable on an older system. The supplied binary bootloader should work with older GLIBC. However, the and other dynamic libraries still depends on the newer GLIBC. The solution is to compile the Python interpreter with its modules (and also probably bootloader) on the oldest system you have around, so that it gets linked with the oldest version of GLIBC.

    Another solution is to use a tool like StaticX to create a fully-static bundled version of your PyInstaller application. StaticX bundles all dependencies, including libc and . (Python code PyInstaller StaticX Fully-static application)

  2. How to get recent Python environment working on old Linux distribution? The issue is that Python and its modules has to be compiled against older GLIBC. Another issue is that you probably want to use latest Python features and on old Linux distributions there is only available really old Python version (e.g. on Centos 5 is available Python 2.4). The following tools could help you to set up environment with recent Python on old Linux distribution:

    • pyenv

      you would need to specify PYTHON_CONFIGURE_OPTS=»—enable-shared» when building a Python version for PyInstaller

PyPy

Гидо ван Россум однажды сказал: «Если вы хотите, чтобы ваш код работал быстрее, вам, вероятно, следует просто использовать PyPy». Я загрузил переносимые двоичные файлы в папку, а в папке bin скопировал pystone.py. Затем я запустил это так: Мы просто установили PyPy 3 с помощью Ubuntu Snap:

$ sudo snap install pypy3 --classic

Результаты бенчмарка:

$ pypy3 pystone.py 1000000
Pystone(1.1.1) time for 1000000 passes = 0.359845
This machine benchmarks at 2.77897e+06 pystones/second

$ pypy3 pystone.py 1000000
Pystone(1.1.1) time for 1000000 passes = 0.26776
This machine benchmarks at 3.73469e+06 pystones/second

$ pypy3 pystone.py 1000000
Pystone(1.1.1) time for 1000000 passes = 0.147859
This machine benchmarks at 6.7632e+06 pystones/second

Для данного теста результаты выполнения до «разгона» показывают более 10 кратное, а после «разгона» более чем 26 кратное ускорение производительности.

Создание исполняемого файла требует больше работы. Вы должны написать свой Python в подмножестве RPython.

PyInstaller Overview

PyInstaller bundles a Python application and all its dependencies into a single
package. The user can run the packaged app without installing a Python
interpreter or any modules.

Documentation:
Website:
Code:
Donate:

Bitcoin: 1JUFjawzWDR7Tc8z9TKXstVFdjkDY9FbtK

PyInstaller reads a Python script written by you. It analyzes your code
to discover every other module and library your script needs in order to
execute. Then it collects copies of all those files – including the active
Python interpreter! – and puts them with your script in a single folder, or
optionally in a single executable file.

PyInstaller is tested against Windows, Mac OS X, and GNU/Linux.
However, it is not a cross-compiler:
to make a Windows app you run PyInstaller in Windows; to make
a GNU/Linux app you run it in GNU/Linux, etc.
PyInstaller has been used successfully
with AIX, Solaris, FreeBSD and OpenBSD,
but is not tested against them as part of the continuous integration tests.

Main Advantages

  • Works out-of-the-box with any Python version 2.7 / 3.5-3.7.
  • Fully multi-platform, and uses the OS support to load the dynamic libraries,
    thus ensuring full compatibility.
  • Correctly bundles the major Python packages such as numpy, PyQt4, PyQt5,
    PySide, Django, wxPython, matplotlib and others out-of-the-box.
  • Compatible with many 3rd-party packages out-of-the-box. (All the required
    tricks to make external packages work are already integrated.)
  • Libraries like PyQt5, PyQt4, PySide, wxPython, matplotlib or Django are fully
    supported, without having to handle plugins or external data files manually.
  • Working code signing on OS X.
  • Bundles MS Visual C++ DLLs on Windows.

PyInstaller is available on PyPI. You can install it through pip:

pip install pyinstaller

Basic usage is very simple, just run it against your main script:

pyinstaller /path/to/yourscript.py

Untested Platforms

The following platforms have been contributed and any feedback or
enhancements on these are welcome.

FreeBSD

Before using any contributed platform, you need to build the PyInstaller
bootloader, as we do not ship binary packages. Download PyInstaller
source, and build the bootloader:

cd bootloader
python ./waf distclean all

Then install PyInstaller:

python setup.py install

or simply use it directly from the source (pyinstaller.py).

Options¶

General Options

-h, --help show this help message and exit
-v, --version Show program version info and exit.
--distpath DIR Where to put the bundled app (default: ./dist)
--workpath WORKPATH
  Where to put all the temporary work files, .log, .pyz
and etc. (default: ./build)
-y, --noconfirm
  Replace output directory (default:
SPECPATH/dist/SPECNAME) without asking for
confirmation
--upx-dir UPX_DIR
  Path to UPX utility (default: search the execution
path)
-a, --ascii Do not include unicode encoding support (default:
included if available)
--clean Clean PyInstaller cache and remove temporary files
before building.
--log-level LEVEL
  Amount of detail in build-time console messages. LEVEL
may be one of DEBUG, INFO, WARN, ERROR, CRITICAL
(default: INFO).

What to generate

-D, --onedir Create a one-folder bundle containing an executable
(default)
-F, --onefile Create a one-file bundled executable.
--specpath DIR Folder to store the generated spec file (default:
current directory)
-n NAME, --name NAME
  Name to assign to the bundled app and spec file
(default: first script’s basename)

What to bundle, where to search

-p DIR, --paths DIR
  A path to search for imports (like using PYTHONPATH).
Multiple paths are allowed, separated by ‘:’, or use
this option multiple times
--hidden-import MODULENAME, --hiddenimport MODULENAME
  Name an import not visible in the code of the
script(s). This option can be used multiple times.
--additional-hooks-dir HOOKSPATH
  An additional path to search for hooks. This option
can be used multiple times.
--runtime-hook RUNTIME_HOOKS
  Path to a custom runtime hook file. A runtime hook is
code that is bundled with the executable and is
executed before any other code or module to set up
special features of the runtime environment. This
option can be used multiple times.
--exclude-module EXCLUDES
  Optional module or package (his Python names, not path
names) that will be ignored (as though it was not
found). This option can be used multiple times.
--key KEY The key used to encrypt Python bytecode.

How to generate

-d, --debug Tell the bootloader to issue progress messages while
initializing and starting the bundled app. Used to
diagnose problems with missing imports.
-s, --strip Apply a symbol-table strip to the executable and
shared
libs (not recommended for Windows)
--noupx Do not use UPX even if it is available (works
differently between Windows and *nix)

Windows and Mac OS X specific options

-c, --console, --nowindowed
  Open a console window for standard i/o (default)
-w, --windowed, --noconsole
  Windows and Mac OS X: do not provide a console window
for standard i/o. On Mac OS X this also triggers
building an OS X .app bundle. This option is ignored
in *NIX systems.
-i , --icon
  FILE.ico: apply that icon to a Windows executable.
FILE.exe,ID, extract the icon with ID from an exe.
FILE.icns: apply the icon to the .app bundle on Mac OS
X

Windows specific options

--version-file FILE
  add a version resource from FILE to the exe
-m , --manifest
  add manifest FILE or XML to the exe
-r RESOURCE, --resource RESOURCE
  Add or update a resource to a Windows executable. The
RESOURCE is one to four items,
FILE]]. FILE can be a data file
or an exe/dll. For data files, at least TYPE and NAME
must be specified. LANGUAGE defaults to 0 or may be
specified as wildcard * to update all resources of the
given TYPE and NAME. For exe/dll files, all resources
from FILE will be added/updated to the final
executable if TYPE, NAME and LANGUAGE are omitted or
specified as wildcard *.This option can be used
multiple times.
--uac-admin Using this option creates a Manifest which will
request elevation upon application restart.
--uac-uiaccess Using this option allows an elevated application to
work with Remote Desktop.

Windows Side-by-side Assembly searching options (advanced)

--win-private-assemblies
  Any Shared Assemblies bundled into the application
will be changed into Private Assemblies. This means
the exact versions of these assemblies will always be
used, and any newer versions installed on user
machines at the system level will be ignored.
--win-no-prefer-redirects
  While searching for Shared or Private Assemblies to
bundle into the application, PyInstaller will prefer
not to follow policies that redirect to newer
versions, and will try to bundle the exact versions of
the assembly.

Cx_Freeze

Cx_freeze — это набор скриптов и модулей для «замораживания» скриптов Python в исполняемые файлы. Установить cx_Freeze можно с помощью PIP3:

sudo pip3 install cx_Freeze --upgrade
$ cxfreeze pystone.py -O -s --target-dir dist
Missing modules:
? __main__ imported from bdb, pdb
? _dummy_threading imported from dummy_threading
? _frozen_importlib imported from importlib, importlib.abc
? _frozen_importlib_external imported from importlib, importlib._bootstrap, importlib.abc
? _winapi imported from subprocess
? _winreg imported from platform
? java.lang imported from platform
? msvcrt imported from subprocess
? nt imported from ntpath, os, shutil
? org.python.core imported from copy, pickle
? os.path imported from os, pkgutil, py_compile, tracemalloc, unittest, unittest.util
? vms_lib imported from platform
? winreg imported from mimetypes, platform
This is not necessarily a problem - the modules may not be needed on this platform.

Copying data from package collections...
Copying data from package email...
Copying data from package encodings...
Copying data from package html...
Copying data from package http...
Copying data from package importlib...
Copying data from package logging...
Copying data from package pydoc_data...
Copying data from package unittest...
Copying data from package urllib...
Copying data from package xml...

$ dist/pystone 1000000
Pystone(1.1.1) time for 1000000 passes = 5.35072
This machine benchmarks at 186891 pystones/second

Как можно видеть, производительность даже ниже, чем у стандартного интерпретатора CPython. Данное решение разумно использовать только для упаковки всего Python-окружения в независимый исполняемый пакет. Стоит отметить, что для этой цели можно использовать и Pyinstaller.

Running PyInstaller with Python optimizations¶

Note

When using this feature, you should be aware of how the Python bytecode
optimization mechanism works. When using , is set
to and statements are removed from the bytecode.
The flag additionally removes docstrings.

Using this feature affects not only your main script, but all modules
included by PyInstaller. If your code (or any module imported by your
script) relies on these features, your program may break or have
unexpected behavior.

PyInstaller can be run with Python optimization flags ( or )
by executing it as a Python module, rather than using the
command:

# run with basic optimizations
python -O -m PyInstaller myscript.py

# also discard docstrings
python -OO -m PyInstaller myscript.py

Or, by explicitly setting the environment variable
to a non-zero value:

# Unix
PYTHONOPTIMIZE=1 pyinstaller myscript.py

# Windows
set PYTHONOPTIMIZE=1 && pyinstaller myscript.py

You can use any PyInstaller options that are otherwise available with
the command. For example:

python -O -m PyInstaller --onefile myscript.py

Alternatively, you can also use the path to pyinstaller:

Supporting Multiple Platforms¶

If you distribute your application for only one combination of OS and Python,
just install PyInstaller like any other package and use it in your
normal development setup.

Supporting Multiple Python Environments

When you need to bundle your application within one OS
but for different versions of Python and support libraries – for example,
a Python 3 version and a Python 2.7 version;
or a supported version that uses Qt4 and a development version that uses Qt5 –
we recommend you use virtualenv.
With virtualenv you can maintain different combinations of Python
and installed packages, and switch from one combination to another easily.
(If you work only with Python 3.4 and later,
does the same job, see module venv.)

  • Use virtualenv to create as many different development environments as you need,
    each with its unique combination of Python and installed packages.
  • Install PyInstaller in each environment.
  • Use PyInstaller to build your application in each environment.

Note that when using virtualenv, the path to the PyInstaller commands is:

  • Windows: ENV_ROOT\Scripts
  • Others: ENV_ROOT/bin

Under Windows, the pip-Win package installs virtualenv and makes it
especially easy to set
up different environments and switch between them.
Under GNU/Linux and Mac OS, you switch environments at the command line.

See PEP 405 for more information about Python virtual environments.

Ссылка на основную публикацию