- PyInstaller. Дистрибуция кода Python
- Введение
- Примеры
- Установка и настройка
- Использование Pyinstaller
- Объединение в одну папку
- Объединение в один файл
- Синтаксис
- Параметры
- Примечания
- How to Install PyInstaller В¶
- Installing in WindowsВ¶
- Installing in MacВ OSВ XВ¶
- Installing from the archiveВ¶
- Verifying the installationВ¶
- Installed commandsВ¶
- Pyinstaller windows from linux
- Собираем проект на python3&PyQT5 под Windows, используя PyInstaller
- Немного о Pyinstaller
- Приступаем к сборке
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. Вы получите реальный опыт, разрабатывая качественный код и анализируя реальные данные.
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 .
Pyinstaller windows from linux
PyInstaller Docker Images
cdrx/pyinstaller-linux and cdrx/pyinstaller-windows are a pair of Docker containers to ease compiling Python applications to binaries / exe files.
Current PyInstaller version used: 3.6.
cdrx/pyinstaller-linux and cdrx/pyinstaller-windows both have two tags, :python2 and :python3 which you can use depending on the requirements of your project. :latest points to :python3
The :python2 tags run Python 2.7.
The :python3 tag runs Python 3.7.
There are two containers, one for Linux and one for Windows builds. The Windows builder runs Wine inside Ubuntu to emulate Windows in Docker.
To build your application, you need to mount your source code into the /src/ volume.
The source code directory should have your .spec file that PyInstaller generates. If you don’t have one, you’ll need to run PyInstaller once locally to generate it.
If the src folder has a requirements.txt file, the packages will be installed into the environment before PyInstaller runs.
For example, in the folder that has your source code, .spec file and requirements.txt :
will build your PyInstaller project into dist/windows/ . The .exe file will have the same name as your .spec file.
will build your PyInstaller project into dist/linux/ . The binary will have the same name as your .spec file.
How do I install system libraries or dependencies that my Python packages need?
You’ll need to supply a custom command to Docker to install system pacakges. Something like:
Replace wget with the dependencies / package(s) you need to install.
How do I generate a .spec file?
docker run -v «$(pwd):/src/» cdrx/pyinstaller-linux «pyinstaller your-script.py»
will generate a spec file for your-script.py in your current working directory. See the PyInstaller docs for more information.
How do I change the PyInstaller version used?
Add pyinstaller=3.1.1 to your requirements.txt .
Is it possible to use a package mirror?
Yes, by supplying the PYPI_URL and PYPI_INDEX_URL environment variables that point to your PyPi mirror.
Собираем проект на python3&PyQT5 под Windows, используя PyInstaller
Причиной написания статьи, явилось огромное количество постоянно возникающих у новичков вопросов такого содержания: «Как собрать проект c pyqt5», «Почему не работает», «Какой инструмент выбрать» и т.д. Сегодня научимся собирать проекты без мучений и танцев с бубном.
Как-то пришлось написать небольшое desktop-приложение. В качестве языка программирования для разработки был выбран python, поскольку для решения моей задачи он подходил идеально. В стандартную библиотеку Python уже входит библиотека tkinter, позволяющая создавать GUI. Но проблема tkinter в том, что данной библиотеке посвящено мало внимания, и найти в интернете курс, книгу или FAQ по ней довольно-таки сложно. Поэтому было решено использовать более мощную, современную и функциональную библиотеку Qt, которая имеет привязки к языку программирования python в виде библиотеки PyQT5. Более подробно про PyQT можете почитать здесь. В качестве примера я буду использовать код:
Если вы более-менее опытный разработчик, то понимаете, что без интерпретатора код на python не запустить. А хотелось бы дать возможность каждому пользователю использовать программу. Вот здесь к нам на помощь и приходят специальные библиотеки позволяющие собирать проекты в .exe, которые можно потом без проблем запустить, как обычное приложение.
Существует большое количество библиотек, позволяющих это сделать, среди которых самые популярные: cx_Freeze, py2exe, nuitka, PyInstaller и др. Про каждую написано довольно много. Но надо сказать, что многие из этих решений позволяют запускать код только на компьютере, с предустановленным интерпретатором и pyqt5. Не думаю, что пользователь будет заморачиваться и ставить себе дополнительные пакеты и программы. Надеюсь, вы понимаете, что запуск программы на dev-среде и у пользователя это не одно и тоже. Также нужно отметить, что у каждого решения были свои проблемы: один не запускался, другой собирал то, что не смог потом запустить, третий вообще отказывался что-либо делать.
После долгих танцев с бубном и активным гуглением, мне все же удалось собрать проект с помощью pyinstaller, в полностью работоспособное приложение.
Немного о Pyinstaller
Pyinstaller собирает python-приложение и все зависимости в один пакет. Пользователь может запускать приложение без установки интерпретатора python или каких-либо модулей. Pyinstaller поддерживает python 2.7 и python 3.3+ и такие библиотеки как: numpy, PyQt, Django, wxPython и другие.
Pyinstaller тестировался на Windows, Mac OS X и Linux. Как бы там ни было, это не кросс-платформенный компилятор: чтобы сделать приложение под Windows, делай это на Windows; Чтобы сделать приложение под Linux, делай это на Linux и т.д.
PyInstaller успешно используется с AIX, Solaris и FreeBSD, но тестирование не проводилось.
Подробнее о PyInstaller можно почитать здесь: документация.
К тому же после сборки приложение весило всего около 15 мб. Это к слову и является преимуществом pyinstaller, поскольку он не собирает все подряд, а только необходимое. Аналогичные же библиотеки выдавали результат за 200-300 мб.
Приступаем к сборке
Прежде чем приступить к сборке мы должны установить необходимые библиотеки, а именно pywin32 и собственно pyinstaller:
Чтобы убедится, что все нормально установилось, вводим команду:
должна высветиться версия pyinstaller. Если все правильно установилось, идем дальше.
В папке с проектом запускаем cmd и набираем:
Собственно это и есть простейшая команда, которая соберет наш проект.
Синтаксис команды pyinstaller таков:
pyinstaller [options] script [script . ] | specfile
Наиболее часто используемые опции:
—onefile — сборка в один файл, т.е. файлы .dll не пишутся.
—windowed -при запуске приложения, будет появляться консоль.
—noconsole — при запуске приложения, консоль появляться не будет.
—icon=app.ico — добавляем иконку в окно.
—paths — возможность вручную прописать путь к необходимым файлам, если pyinstaller
не может их найти(например: —paths D:\python35\Lib\site-packages\PyQt5\Qt\bin)
PyInstaller анализирует файл myscript.py и делает следующее:
- Пишет файл myscript.spec в той же папке, где находится скрипт.
- Создает папку build в той же папке, где находится скрипт.
- Записывает некоторые логи и рабочие файлы в папку build.
- Создает папку dist в той же папке, где находится скрипт.
- Пишет исполняемый файл в папку dist.
В итоге наша команда будет выглядеть так:
После работы программы вы найдете две папки: dist и build. Собственно в папке dist и находится наше приложение. Впоследствии папку build можно спокойно удалить, она не влияет на работоспособность приложения.
Спасибо за внимание. Надеюсь статья была вам полезна.