Как запаковать программу python

Я создаю приложение Python и не хочу заставлять своих клиентов устанавливать Python и модули. Итак, есть ли способ скомпилировать скрипт Python в качестве автономного исполняемого файла?

задан 28 марта ’11, 08:03

Часть вопроса, которая гласит: «Я не хочу заставлять своих клиентов устанавливать Python и модули». Он не говорит, что клиенты не могут этого сделать, он говорит, что разработчик не хочет требовать от них этого. Здесь нет смысла обсуждать этот вопрос, потому что клиенты не читают SO, чтобы говорить сами за себя. Я бы не хотел устанавливать среду разработки Flash, чтобы просто смотреть youtube, или среду разработки C, чтобы играть в судоку, или среду разработки Python, чтобы запускать версию Angry Birds, написанную на Python. Вот для чего нужны распространяемые среды выполнения. — Dave

Будет ли приемлем ответ, включающий много файлов, но только один для запуска приложения? Я думаю о какой-то автоматизации упаковки приложения + требований с переносимым дистрибутивом python и создания сценария установки для его автоматизации. — np8

Как превратить программу Python в приложение Mac Os

19 ответы

Вы можете использовать py2exe как уже ответили и используйте Китон преобразовать ваш ключ .py файлы в .pyc , Скомпилированные файлы C, например .dll в Windows и .so на Linux. Восстановить гораздо сложнее, чем обычно .pyo и .pyc файлы (а также прирост производительности!).

Создан 22 июн.

Спасибо за ответ. Я рассматривал Cython, но, похоже, Python все еще нужен для запуска скомпилированного исполняемого файла. Вы имеете в виду компиляцию скрипта в .pyc с использованием Cython? (Я не знал, есть ли у Cython такая функция) — Джефф

Я имею в виду, что у тебя есть две проблемы: закрытый код и без депс. Для закрытого исходного кода скомпилируйте свой важную код в библиотеках C с использованием Cython. Для no-deps используйте py2exe и создайте исполняемый файл с файлами .pyd (скомпилированными в cython) внутри. — нейрино

Что бы вы сделали с библиотеками (numpy, scipy, matplotlib)? Например, как клиенты смогут использовать функцию ginput () в matplotlib из исполняемого файла, не установив ее на свой компьютер. — шимпанзе

Последний выпуск, кажется, был в 2008 году, это все еще поддерживается? — Цитракс

Вы можете использовать PyInstaller для упаковки программ Python как автономных исполняемых файлов. Он работает в Windows, Linux и Mac.

PyInstaller Быстрый запуск

Установите PyInstaller из PyPI:

pip install pyinstaller
Перейдите в каталог вашей программы и запустите:
pyinstaller yourprogram.py
Это создаст пакет в подкаталоге с именем dist . Для более подробного прохождения см. руководство.
Создан 27 фев.

Стоит отметить, что pyinstaller может компилироваться в один файл .exe. Также, на какой ОС он запущен, делает который исполняемый файл, то есть .exe при запуске в Windows — Ричард де Вит

использовать pyinstaller намного проще, чем py2exe. Он заботится обо всех зависимостях, включая numpy, pandas, что угодно, и дает вам единственный исполняемый файл на рабочей платформе! — АКС

Компиляция Python в EXE? | Nuitka, Pyinstaller, InnoSetup

Похоже, именно то, что я искал. И теперь поддерживает Python 3! Спасибо 🙂 — Даниэль Грушчик

Я пробовал их все, PyInstaller и другие (py2exe, freeze, cython, встроенная версия python и т.д.) по-прежнему не могут справиться с зависимостью самой динамической библиотеки python, по крайней мере, в Windows (python * .dll). DLL зависит от среды выполнения, которая ДОЛЖНА БЫТЬ установлена ​​отдельно. После процесса вы получите исполняемый файл, который будет связан с dll и, следовательно, будет иметь такую ​​же возможность импорта. Таким образом, ваш «автономный» исполняемый файл не сильно автономен, а больше похож на встраиваемый. Чтобы обойти зависимость времени выполнения, вам НЕОБХОДИМО перестроить питон из источника, используя cpython проект. — Andry

Вы можете захотеть исследовать Нуйтка. Он берет исходный код Python и преобразует его в вызовы API C ++. Затем он компилируется в исполняемый двоичный файл (ELF в Linux). Он существует уже несколько лет и поддерживает широкий спектр версий Python. Вы, вероятно, также получите улучшение производительности, если воспользуетесь им.

Рекомендуется.

Создан 28 июля ’20, 18:07

Nuitka — потрясающий инструмент. Нет необходимости не использовать его. Отмечу только одно — это не ограничивается только Linux — это кросс-платформенной — еще одна причина, по которой его использовать. — Sjaustirni

Nuitka работает на Python 2.6, 2.7, 3.2, 3.3 и 3.4 и является кроссплатформенной: (Linux, FreeBSD, NetBSD, MacOS X и Windows (32/64 бит). Другие могут также работать. Архитектуры: x86, x86_64 (amd64) и arm. Другие архитектуры также могут работать из коробки.) — Джонатан Хартли

Он не поддерживается в последней версии 3.6 .. и его установка в Windows — кошмар — Tetora
Прекрасно работает на macOS High Sierra + Python 3.5.2. Спасибо! — Энтони Л.
Это создает автономный исполняемый файл? — голоса

Читайте также:
Как установить программу imo на компьютер

Да, можно скомпилировать сценарии Python в отдельные исполняемые файлы. PyInstaller может использоваться для преобразования программ Python в автономные исполняемые файлы под Windows, Linux, Mac OS X, FreeBSD, Solaris, и AIX. Это один из рекомендуемых конвертеров. py2exe преобразует скрипты Python в исполняемый файл только на платформе Windows. Китон — статический компилятор как для языка программирования Python, так и для расширенного языка программирования Cython.

Создан 28 июля ’20, 18:07

Спасибо за это. Я использовал py2exe и вообще не мог заставить значки работать с ним. PyInstaller сработал впервые и отлично выглядит! — Чудь37

Могу ли я создать автономный исполняемый файл из Windows для Linux и macOS? Или мне следует установить Linux и macOS на VirtualBox? У меня на ноутбуке недостаточно свободного места. — 8Наблюдатель8

  • Он показал некоторые проблемы с созданием отдельных файлов в 64-битной версии Windows: Использование bundle_files = 1 с py2exe не работает;
  • Для работы необходимо создать файл setup.py. http://www.py2exe.org/index.cgi/Tutorial#Step2;
  • У меня были проблемы с зависимостями, которые вы должны решить, импортировав пакеты в установочный файл;
  • Мне не удалось заставить его работать вместе с PyQt.

Эта последняя причина заставила меня попробовать PyInstaller http://www.pyinstaller.org/.

На мой взгляд, это намного лучше, потому что:

  • Так проще в использовании.

Я предлагаю создать файл .bat, например, со следующими строками (pyinstaller.exe должен находиться в пути Windows):

pyinstaller.exe —onefile MyCode.py

  • Вы можете создать один файл среди других опций (https://pyinstaller.readthedocs.io/en/stable/usage.html#options).
  • У меня была только одна проблема с PyInstaller и пакетом multiprocessing, которая была решена с помощью этого рецепта: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing.

Итак, я думаю, что, по крайней мере, для python 2.7 лучшим и более простым вариантом является PyInstaller.

Создан 28 июля ’20, 18:07

Наблюдения и советы этой статьи мы подготовили на основании опыта команды —onefile flag не поможет вам сделать его переносимым в Windows, потому что исполняемый файл все еще хочет связываться с api-ms-win-crt-runtime-l1-1-0.dll библиотека (и / или другие), которую необходимо установить через vcredist упаковка. Таким образом, зависимость все еще существует, и ее необходимо установить перед запуском. — Andry

И третий вариант — cx_Freeze , который является кроссплатформенным.

ответ дан 24 дек ’20, 01:12

5 простых шагов по упаковке и публикации кода Python в PyPI

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

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

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

Точнее, я обнаружил, что ресурсы для распространения вашей работы через PyPI (Python Project Index) очень ограничены и часто не полны. PyPI — это репозиторий с открытым исходным кодом для всех проектов Python, предлагаемых разработчиками по всему миру. Основное преимущество использования PyPI для распространения вашей работы заключается в том, насколько просто он позволяет другим пользователям устанавливать и использовать ваш код на своих локальных устройствах.

Распространение пакета с помощью PyPI делает его устанавливаемым с помощью pip — команды, используемой для установки пакетов Python на локальные устройства в виртуальных средах. В этой статье я попытаюсь упростить процесс распространения пакета в PyPI, выполнив 5 простых шагов, используя stepuptools .

Шаг 1. Подготовьте файлы кода.

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

packageName ├── LICENSE ├── projectName │ ├── __init__.py │ ├── module_1.py │ ├── module_1.py │ └── module_2.py ├── README ├── pyproject.toml └── setup file

В некоторых пакетах packageName и projectName совпадают, но в этом нет необходимости. packageName используется в команде установки pip, поэтому будет pip install packageName , а имя проекта будет использоваться в команде import после установки пакета. Итак, после завершения установки вы набираете import projectName .

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

mydir ├── dir │ ├── __init__.py │ └── module_1.py └── some other files

Предполагая, что mydir находится на вашем пути (тот, который вы выбираете при установке Python), вы сможете импортировать код module_1.py в свои файлы кода просто как:

Читайте также:
Лучшие программы для удаления шпионов

import dir.module_1 #Or from dir import module_1

Если __init__.py файла не было в каталоге; когда вы запускаете Python, интерпретатор больше не будет искать модули в этом каталоге, что приведет к ошибке импорта, если вы попытаетесь импортировать эти модули. Файл __init__.py в большинстве случаев является пустым файлом. Но иногда он может включать более удобные или простые имена для подмодулей.

Шаг 2: Подготовьте вспомогательные файлы.

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

№1: установочный файл
Этот файл включает метаданные о проекте, например, его автора, его репозиторий, описание проекта, лицензию, под которой он опубликован, и многое другое. . Есть два типа установочных файлов: статические и динамические.

  • Статический ( setup.cfg ): одно и то же каждый раз при установке пакета. Его формат легко читать и понимать.
  • Динамический ( setup.py ): некоторые элементы в нем являются динамическими или определяются во время установки.

Официальный сайт упаковки Python настоятельно рекомендует использовать статические установочные файлы и использовать динамические только в случае крайней необходимости. Итак, в этой статье я сосредоточусь на статическом установочном файле. Вот шаблон файла setup.cfg, который вы можете использовать.

[metadata] name = NAME_OF_YOUR_PROJECT version = 0.0.1 author = YOUR_NAME author_email = YOUR_EMAIL description = WHAT IS THE REASON YOU BUILD THIS PROJECT AND WHAT IT DOES long_description = file: README.md long_description_content_type = text/markdown url = GITHUB REPOSITORY LINK classifiers = Programming Language :: Python :: 3 License :: OSI Approved :: Apache Software License Operating System :: OS Independent [options] packages = find: python_requires = >=3.7 include_package_data = True

Разделы [параметры] касаются зависимостей. Строка Package = find: автоматически определяет зависимости вашего пакета.

№2: Файл pyproject. toml
Это простой, короткий и часто фиксированный файл, который включает инструменты Python для создания пакета PyPi. Он в основном объясняет PyPI, что мы планируем использовать setuptools и wheels для распространения и сборки нашего пакета.

[build-system] requires = [ “setuptools>=42”, “wheel” ] build-backend = “setuptools.build_meta”

№3: файл лицензии
Существует много различных лицензий с открытым исходным кодом; выбор зависит от вашей цели и характера вашего проекта; если вам нужна помощь в выборе лицензии на использование, этот сайт может вам помочь.

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

№4: файл README
Файл README часто включает подробную информацию о проекте, его установке и, возможно, пример использования. В пакетах PyPI файлы README часто принимают одну из 4 форм README , README.txt , README.rst или README.md . Это либо обычный текст, либо reStructuredText, либо файл Markdown. Что бы вы ни решили использовать, оно будет использоваться в качестве описания проекта на странице пакета на веб-сайте PyPI.

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

Шаг 3. Создайте свой пакет локально

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

Если у вас нет инструмента wheel, вам необходимо установить его и иметь последнюю версию инструмента build.

pip install wheel py -m pip install —upgrade build

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

py -m build

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

Шаг 4. Загрузите свой пакет в TestPyPI.

Тот факт, что ваш пакет был успешно собран локально, не означает, что у вас не будет проблем, когда вы попытаетесь установить его с помощью pip. Итак, этот шаг — всего лишь шаг тестирования и отладки; Вы можете пропустить это, если хотите. Загрузка вашего пакета в testPyPI позволит вам установить его, просто чтобы протестировать.

Итак, зарегистрируйтесь как на PyPi, так и на testPyPi. Я должен отметить, что эти двое полностью независимы и не имеют общей базы данных. После регистрации у вас будет имя пользователя и пароль; убедитесь, что вы их помните, потому что вы будете использовать их для загрузки своего пакета.

Теперь установите Twine, инструмент, который поможет вам создать пакет.

pip install twine

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

py -m twine upload —repository testpypi dist/*

В результате должно получиться что-то подобное:

Uploading distributions to https://test.pypi.org/legacy/ Enter your username: [your username] Enter your password: Uploading yourpkg_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl 100%|█████████████████████| 4.65k/4.65k [00:01

Затем вы можете установить свой пакет в виртуальной среде и протестировать его работу. Если это так, мы можем перейти к последнему шагу.

Шаг 5. Распространите свою работу на PyPI

Убедившись, что ваш пакет работает на testPyPI, вы можете продолжить и загрузить его в PyPI. Если вы загружаете этот пакет впервые, вы можете использовать следующую команду для его загрузки.

Читайте также:
Программа которая может взломать любую игру

py -m twine upload —repository PyPI dist/*

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

py -m twine upload —skip-existing dist/*

И вуаля, ваш пакет загружен и готов к использованию.

Последние мысли

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

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

При этом некоторые аспекты программирования на Python не рассматриваются в такой степени, как другие. Если вы хотите иметь дело со списками, словарями, ООП, модуляцией в Python, вы найдете миллионы результатов Google, которые помогут вам сделать это легко и эффективно.

Но один из аспектов Python, которому не уделялось должного внимания, — это то, как правильно упаковать код Python и распространять его через Python Project Index (PyPI) для использования другими. Я надеюсь, что эта статья сделала процесс упаковки кода Python управляемым и понятным, чтобы вы могли беспрепятственно распространять свою работу.

Источник: digitrain.ru

Как упаковать Python Project в отдельный исполняемый файл?

Я не хочу выпускать свой проект Python, но когда я отправляю его кому-то, он вынужден установить все пакеты, которые я использую в моем проекте Python. Есть ли способ упаковать это или что-то, потому что, возможно, есть некоторые пользователи, которые не очень знакомы с pip или python. С уважением

OperationJynx 16 янв. 2019, в 09:29
Поделиться
phd 16 янв. 2019, в 17:17
phd 16 янв. 2019, в 17:18

Поделиться:

4 ответа

Лучший ответ

PyInstaller

PyInstaller — это программа, которая замораживает (упаковывает) программы Python в автономные исполняемые файлы под Windows, GNU/Linux, Mac OS X, FreeBSD, Solaris и AIX. Его основные преимущества перед аналогичными инструментами заключаются в том, что PyInstaller работает с Python 2.7 и 3.4—3.7, он создает меньшие исполняемые файлы благодаря прозрачному сжатию, он полностью мультиплатформенный и использует поддержку ОС для загрузки динамических библиотек, обеспечивая тем самым полную совместимость.

Это работает, даже если у пользователей не установлен Python.

Вот пример из проекта GitHub. Как видите, вы можете скачать исходники, а также zip-архив, содержащий все пакеты, используемые для запуска вашего проекта. В этом примере он содержит много файлов, но вы можете упаковать все в один файл .exe.

Как использовать (руководство):

Установите PyInstaller из PyPI:

pip install pyinstaller

Перейдите в каталог ваших программ и запустите:

pyinstaller yourprogram.py

Это сгенерирует пакет в подкаталоге с именем dist.

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

Конкретный случай:

Вы спросили, как получить аргументы, отправленные пользователем. Вот какой-то способ сделать это более или менее удобно: — Использовать input(), — Использовать файл конфигурации, — Использовать параметр по умолчанию

Dorian Turba 16 янв. 2019, в 05:57
Поделиться

Здравствуйте, спасибо за ваш ответ. Но как .exe может работать на компьютере Mac / Linux? А также конвертировать его в .exe — это нормально, но я не хочу сохранять файл .py, потому что он работает с параметром, я просто хочу сделать его удобным для пользователя, так что никто не должен загружать все пакеты с помощью pip, который я использую в мой проект. // Редактировать: как я могу упаковать все в один .exe?

OperationJynx 16 янв. 2019, в 08:43
Для Mac это создает .app, а для linux — исполняемый файл.
Dorian Turba 16 янв. 2019, в 08:50

Вы изменили свой комментарий и спросили: «Как мне упаковать все в один .exe?» поэтому я должен отредактировать свой ответ для вас.

Dorian Turba 16 янв. 2019, в 08:52

Могу ли я проанализировать параметры при запуске программы на консоли? И когда я использую —onefile в качестве параметра, я получаю только .exe и не .app или что-то еще .. странно

OperationJynx 16 янв. 2019, в 08:52

Да, потому что вы спрашиваете «-onefile». Используя консоль, вы просите вашего интерпретатора Python запустить вашу программу. Делая это, вы должны установить пакет и все, что с помощью pip. Что ты можешь сделать ? для меня, параметр по умолчанию, чтобы избежать отправки параметра или файла конфигурации, где пользователь может установить все, что он хочет.

Dorian Turba 16 янв. 2019, в 08:58

Вы также можете напрямую спросить пользователя с помощью input () и получить аргумент с помощью split (), хотите ли вы все в одном входе: stackoverflow.com/questions/19063114/…

Источник: overcoder.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru