- How to Install PyInstaller В¶
- Installing in WindowsВ¶
- Installing in MacВ OSВ XВ¶
- Installing from the archiveВ¶
- Verifying the installationВ¶
- Installed commandsВ¶
- use pyinstaller to package executable on windows 10
- Guide
- install
- usage
- Example
- use pyd
- use ctype DLLs
- Version
- get version
- set version
- Advanced
- Running PyInstaller with Python optimizations
- only import what you need
- Using UPX
- Encrypting Python Bytecode
- PyInstaller. Дистрибуция кода Python
- Введение
- Примеры
- Установка и настройка
- Использование Pyinstaller
- Объединение в одну папку
- Объединение в один файл
- Синтаксис
- Параметры
- Примечания
- Как создать exe файл для Python кода с помощью PyInstaller
- Установка PyInstaller
- Создание exe файла с помощью PyInstaller
- Добавление файлов с данными, которые будут использоваться exe-файлом
- Добавление файлов с данными и параметр onefile
- Дополнительные импорты с помощью Hidden Imports
- Файл spec
- Вывод:
- Подписывайтесь на канал в Дзене
How to Install PyInstaller В¶
PyInstaller is a normal Python package. You can download the archive from PyPi, but it is easier to install using pip where is is available, for example:
or upgrade to a newer version:
To install the current development version use:
Installing in WindowsВ¶
For Windows, PyWin32 or the more recent pypiwin32, is a prerequisite. The latter is installed automatically when you install PyInstaller using pip or easy_install. If necessary, follow the pypiwin32 link to install it manually.
It is particularly easy to use pip-Win to install PyInstaller along with the correct version of PyWin32. pip-Win also provides virtualenv, which makes it simple to maintain multiple different Python interpreters and install packages such as PyInstaller in each of them. (For more on the uses of virtualenv, see Supporting Multiple Platforms below.)
When pip-Win is working, enter this command in its Command field and click Run:
This creates a new virtual environment rooted at C:\Python\pyi-env-name and makes it the current environment. A new command shell window opens in which you can run commands within this environment. Enter the command
Once it is installed, to use PyInstaller ,
In the Command field enter venv pyi-env-name
Then you have a command shell window in which commands such as pyinstaller execute in that Python environment.
Installing in MacВ OSВ XВ¶
Mac OS X 10.8 comes with Python 2.7 pre-installed by Apple. However, Python 2.7 is end-of-life and no longer supported by PyInstaller , also major packages such as PyQt, Numpy, Matplotlib, Scipy, and the like, have dropped support for Python 2.7, too. Thus we strongly recommend that you install these using either MacPorts or Homebrew.
PyInstaller users report fewer problems when they use a package manager than when they attempt to install major packages individually.
Alternatively you might install Python 3 following the official guide.
Installing from the archiveВ¶
If pip is not available, download the compressed archive from PyPI. If you are asked to test a problem using the latest development code, download the compressed archive from the develop branch of PyInstaller Downloads page.
Expand the archive. Inside is a script named setup.py . Execute python setup.py install with administrator privilege to install or upgrade PyInstaller .
For platforms other than Windows, GNU/Linux and Mac OS, you must first build a bootloader program for your platform: see Building the Bootloader . After the bootloader has been created, use python setup.py install with administrator privileges to complete the installation.
Verifying the installationВ¶
On all platforms, the command pyinstaller should now exist on the execution path. To verify this, enter the command:
The result should resemble 3.n for a released version, and 3.n.dev0-xxxxxx for a development branch.
If the command is not found, make sure the execution path includes the proper directory:
Windows: C:\PythonXY\Scripts where XY stands for the major and minor Python version number, for example C:\Python34\Scripts for Python 3.4)
OS X (using the default Apple-supplied Python) /usr/bin
OS X (using Python installed by homebrew) /usr/local/bin
OS X (using Python installed by macports) /opt/local/bin
To display the current path in Windows the command is echo %path% and in other systems, echo $PATH .
Installed commandsВ¶
The complete installation places these commands on the execution path:
pyinstaller is the main command to build a bundled application. See Using PyInstaller .
pyi-makespec is used to create a spec file. See Using Spec Files .
pyi-archive_viewer is used to inspect a bundled application. See Inspecting Archives .
pyi-bindepend is used to display dependencies of an executable. See Inspecting Executables .
pyi-grab_version is used to extract a version resource from a Windows executable. See Capturing Windows Version Data .
If you do not perform a complete installation (installing via pip or executing setup.py ), these commands will not be installed as commands. However, you can still execute all the functions documented below by running Python scripts found in the distribution folder. The equivalent of the pyinstaller command is pyinstaller-folder /pyinstaller.py . The other commands are found in pyinstaller-folder /cliutils/ with meaningful names ( makespec.py , etc.)
© Copyright This document has been placed in the public domain. Revision e20e74c0 .
use pyinstaller to package executable on windows 10
Guide
install
pyinstall -F demo.py error
usage
What to generate
What to bundle, where to search
Windows and Mac OS X specific options
Example
use pyd
path related source code
generate build and dist folder, plus demo.spec
Tips:
if we use pyinstaller -y -D demo.py don’t include —path=»sdk/superdog» ,
package will be missing, and error occur when we run executable.
all related dlls have been copied to dist/demo/ folder,
eg. cublas64_80.dll,curand64_80.dll,cudart64_80.dll,cudnn64_6.dll
use ctype DLLs
path related source code
CDLL related source code
Tips: for CDLL with pyinstaller, we must use bare filenames in python source.
see here
now we run pyintaller again
superdog and detect.
all related dlls have been copied to dist/demo/ folder,
eg. cublas64_80.dll,curand64_80.dll,cudart64_80.dll,cudnn64_6.dll
and cuda80_detect_cpp_dll.dll
Version
get version
set version
Advanced
Running PyInstaller with Python optimizations
Tips: be carefull with optimizations.
PyInstaller can be run with Python optimization flags ( -O or -OO )
by executing it as a Python module, rather than using the pyinstaller command:
Or, by explicitly setting the PYTHONOPTIMIZE environment variable to a non-zero value:
only import what you need
replace import os with from os import path to reduce final executable size.
Using UPX
Encrypting Python Bytecode
To encrypt the Python bytecode modules stored in the bundle, pass the —key=key-string argument on the command line.
For this to work, you must have the PyCrypto module installed. The key-string is a string of 16 characters which is used to encrypt each file of Python byte-code before it is stored in the archive inside the executable file.
PyInstaller. Дистрибуция кода Python
Введение
Примеры
Установка и настройка
PyInstaller — обычный пакет python. Он может быть установлен с использованием pip:
Установка в Windows:
Для Windows установка pywin32 или pypiwin32 — обязательное условие. Когда pyinstaller устанавливается с помощью pip, то pypiwin32 устанавливается автоматически.
Установка в Mac OS X:
PyInstaller работает с Python 2.7 по умолчанию в текущей Mac OS X. Однако, если вы планируете использовать более позднюю версию Python или если вы используете какой-либо из основных пакетов, таких как PyQt, Numpy, Matplotlib, Scipy и т. п. Мы настоятельно рекомендуем установить их с помощью MacPorts, либо Homebrew.
Установка из архива:
Если установка c помощью pip недоступна, загрузите сжатый архив из PyPI .
Чтобы протестировать версию, которая находится на стадии разработки, вы можете загрузить сжатый архив из раздела разработки страницы загрузки PyInstaller.
Распакуйте архив и найдите скрипт setup.py . Выполните python setup.py install с правами администратора для установки или обновления PyInstaller.
Команда pyinstaller должна присутствовать в системном пути для всех платформ после успешной установки.
Это можно проверить, набрав pyinstaller —version в командной строке.
Использование Pyinstaller
Перейдите к каталогу, в котором находится ваш файл и введите:
Pyinstaller анализирует файл и создает:
Файл myfile.spec в том же каталоге, что и myfile.py
Папку сборки в том же каталоге, что и myfile.py
Папку dist в том же каталоге, что и myfile.py
Файлы журналов в папке сборки
Само приложение можно будет найти вложенным в папку dist
Объединение в одну папку
Если PyInstaller запускается без каких-либо параметров для myscript.py, то по умолчанию на выход получаем одну папку (с именем myscript). Она содержит файл с именем myscript (myscript.exe в Windows) вместе со всеми необходимыми зависимостями.
Приложение можно пересылать, сжав папку в zip-файл.
Режим «One Folder» можно установить с помощью опции -D или —onedir
Преимущества:
Одно из основных преимуществ упаковки в папку — легче отлаживать проблемы. Если какие-либо модули не импортируются, их можно проверить в папке.
Если в коде несколько изменений, но используемые зависимости точно совпадают, дистрибуторы могут просто отправить один исполняемый файл (который обычно меньше всей папки).
Недостатки:
Единственный недостаток этого метода — пользователи должны искать исполняемый файл в большом количестве файлов.
Также пользователи могут удалять/изменять другие файлы — это может привести к неправильной работе приложения.
Объединение в один файл
Флаг -F или —onefile определяет, что все будет упаковано в единый исполняемый файл myscript.exe .
Одиночный файл будет работать медленнее, чем при упаковке в папку. Также одиночные файлы сложнее отлаживать.
Синтаксис
pyinstaller [options] script [script . ] | specfile
Параметры
Примечания
PyInstaller собирает python-приложение и все зависимости в один пакет. Пользователь может запускать приложение без установки интерпретатора python или каких-либо модулей. Pyinstaller поддерживает python 2.7 и python 3.3+ и такие библиотеки как: numpy, Django, OpenCv и другие.
Важные моменты, о которых следует помнить:
Pyinstaller поддерживает Python 2.7 и Python 3.3+
Pyinstaller был протестирован на Windows, Linux и Mac OS X.
Pyinstaller НЕ поддерживает кросс компиляцию из одной платформы для всех возможных (т.е. вы не можете создать исполняемый файл для одной операционной системы из другой операционной системы)
Научим основам Python и Data Science на практике
Это не обычный теоритический курс, а онлайн-тренажер, с практикой на примерах рабочих задач, в котором вы можете учиться в любое удобное время 24/7. Вы получите реальный опыт, разрабатывая качественный код и анализируя реальные данные.
Как создать exe файл для Python кода с помощью PyInstaller
Установка PyInstaller
Установка PyInstaller не отличается от установки любой другой библиотеки Python.
Вот так можно проверить версию PyInstaller.
Я использую PyInstaller версии 4.2.
Создание exe файла с помощью PyInstaller
PyInstaller собирает в один пакет Python-приложение и все необходимые ему библиотеки следующим образом:
- Считывает файл скрипта.
- Анализирует код для выявления всех зависимостей, необходимых для работы.
- Создает файл spec, который содержит название скрипта, библиотеки-зависимости, любые файлы, включая те параметры, которые были переданы в команду PyInstaller.
- Собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
- Создает папку BUILD в папке со скриптом и записывает логи вместе с рабочими файлами в BUILD.
- Создает папку DIST в папке со скриптом, если она еще не существует.
- Записывает все необходимые файлы вместе со скриптом или в одну папку, или в один исполняемый файл.
Если использовать параметр команды onedir или -D при генерации исполняемого файла, тогда все будет помещено в одну папку. Это поведение по умолчанию. Если же использовать параметр onefile или -F , то все окажется в одном исполняемом файле.
Возьмем в качестве примера простейший скрипт на Python c названием simple.py, который содержит такой код.
Создадим один исполняемый файл. В командной строке введите:
После завершения установки будет две папки, BUILD и DIST, а также новый файл с расширением .spec. Spec-файл будет называться так же, как и файл скрипта.
Python создает каталог распространения, который содержит основной исполняемый файл, а также все динамические библиотеки.
Вот что произойдет после запуска файла.
Добавление файлов с данными, которые будут использоваться exe-файлом
Есть CSV-файл netflix_titles.csv, и Python-script, который считывает количество записей в нем. Теперь нужно добавить этот файл в бандл с исполняемым файлом. Файл Python-скрипта назовем просто simple1.py.
Создадим исполняемый файл с данными в папке.
Параметр —add-data позволяет добавить файлы с данными, которые нужно сохранить в одном бандле с исполняемым файлом. Этот параметр можно применить много раз.
Можно увидеть, что файл теперь добавляется в папку DIST вместе с исполняемым файлом.
Также, открыв spec-файл, можно увидеть раздел datas, в котором указывается, что файл netflix_titles.csv копируется в текущую директорию.
Запустим файл simple1.exe, появится консоль с выводом: Всего фильмов: 7787 .
Добавление файлов с данными и параметр onefile
Если задать параметр —onefile , то PyInstaller распаковывает все файлы в папку TEMP, выполняет скрипт и удаляет TEMP. Если вместе с add-data указать onefile, то нужно считать данные из папки. Путь папки меняется и похож на «_MEIxxxxxx-folder».
Скрипт обновлен для чтения папки TEMP и файлов с данными. Создадим exe-файл с помощью onefile и add-data.
После успешного создания файл simple1.exe появится в папке DIST.
Можно скопировать исполняемый файл на рабочий стол и запустить, чтобы убедиться, что нет никакой ошибки, связанной с отсутствием файла.
Дополнительные импорты с помощью Hidden Imports
Исполняемому файлу требуются все импорты, которые нужны Python-скрипту. Иногда PyInstaller может пропустить динамические импорты или импорты второго уровня, возвращая ошибку ImportError: No module named …
Для решения этой ошибки нужно передать название недостающей библиотеки в hidden-import.
Например, чтобы добавить библиотеку os, нужно написать вот так:
Файл spec
Файл spec — это первый файл, который PyInstaller создает, чтобы закодировать содержимое скрипта Python вместе с параметрами, переданными при запуске.
PyInstaller считывает содержимое файла для создания исполняемого файла, определяя все, что может понадобиться для него.
Файл с расширением .spec сохраняется по умолчанию в текущей директории.
Если у вас есть какое-либо из нижеперечисленных требований, то вы можете изменить файл спецификации:
- Собрать в один бандл с исполняемым файлы данных.
- Включить другие исполняемые файлы: .dll или .so.
- С помощью библиотек собрать в один бандл несколько программы.
Например, есть скрипт simpleModel.py, который использует TensorFlow и выводит номер версии этой библиотеки.
Компилируем модель с помощью PyInstaller:
После успешной компиляции запускаем исполняемый файл, который возвращает следующую ошибку.
Исправим ее, обновив файл spec. Одно из решений — создать файл spec.
Команда pyi-makespec создает spec-файл по умолчанию, содержащий все параметры, которые можно указать в командной строке. Файл simpleModel.spec создается в текущей директории.
Поскольку был использован параметр —onefile , то внутри файла будет только раздел exe.
Если использовать параметр по умолчанию или onedir, то вместе с exe-разделом будет также и раздел collect.
Можно открыть simpleModel.spec и добавить следующий текст для создания хуков.
Создаем хуки и добавляем их в hidden imports и раздел данных.
Файлы хуков расширяют возможность PyInstaller обрабатывать такие требования, как необходимость включать дополнительные данные или импортировать динамические библиотеки.
Обычно пакеты Python используют нормальные методы для импорта своих зависимостей, но в отдельных случаях, как например TensorFlow, существует необходимость импорта динамических библиотек. PyInstaller не может найти все библиотеки, или же их может быть слишком много. В таком случае рекомендуется использовать вспомогательный инструмент для импорта из PyInstaller.utils.hooks и собрать все подмодули для библиотеки.
Скомпилируем модель после обновления файла simpleModel.spec.
Скопируем исполняемый файл на рабочий стол и увидим, что теперь он корректно отображает версию TensorFlow.
Вывод:
PyInstaller предлагает несколько вариантов создания простых и сложных исполняемых файлов из Python-скриптов:
- Исполняемый файл может собрать в один бандл все требуемые данные с помощью параметра —add-data .
- Исполняемый файл и зависимые данные с библиотеками можно собрать в один файл или папку с помощью —onefile или —onedir соответственно.
- Динамические импорты и библиотеки второго уровня можно включить с помощью hidden-imports .
- Файл spec позволяет создать исполняемый файл для обработки скрытых импортов и других файлов данных с помощью хуков.
Подписывайтесь на канал в Дзене
Полезный контент для начинающих и опытных программистов в канале Лента Python разработчика — Как успевать больше, делать лучше и не потерять мотивацию.