Мое приложение выглядит так:
main.py окна / __init__.py mainwindow.py ... модель/ __init__.py orders.py ... Ресурсы/ image1.png logo.jpg ...
Программа запускается с main.py. Есть ли хороший способ создать на его основе «окончательное» приложение? Я думаю о чем-то вроде py2exe / py2app, но без копирования интерпретатора / модулей python в приложение, где есть только один исполняемый файл.
Я смотрел distutils, но похоже, что он устанавливает программу в каталог Python, что не является обычным для платформ, отличных от Linux.
На данный момент я просто копирую всю исходную папку на целевую машину и создаю псевдоним для main.pyw
Windows. Некоторые неудобства:
- Значок является значком Python по умолчанию.
- Мне нужно создать псевдоним вручную.
- В моем исходном каталоге есть много дополнительных файлов, таких как папка управления версиями.
- Я должен переименовать ,
main.py
чтобыmain.pyw
вручную. - Было бы неплохо, если бы на целевой машине были только файлы `.pyo *. Для этого нет реальной причины, мне просто не нравится иметь ненужные файлы.
Как создать хорошее автоматизированное распространение?
- для окон? (Это единственная платформа, которую я должен поддерживать на данный момент.)
- для Mac?
- для linux?
Ответы:
Обычный способ распространения приложений Python - с помощью distutils . Он предназначен как для распространения модулей Python библиотечного типа, так и для приложений Python, хотя я не знаю, как это работает в Windows. В любом случае вам придется в Windows установить Python отдельно, если вы используете distutils.
Я бы, вероятно, порекомендовал вам распространять его с помощью disutils для Linux и Py2exe или чего-то подобного для Windows. Для OS X не знаю. Если это приложение для конечного пользователя, вам, вероятно, понадобится нечто вроде образа диска, я не знаю, как это сделать. Но прочтите этот пост для получения дополнительной информации о пользовательском опыте. Для приложения, созданного для программистов, вам, вероятно, тоже подойдет установка типа distutils на OS X.
источник
dist
и скопировать в него все соответствующие файлы?Я настоятельно рекомендую Pyinstaller , который без проблем поддерживает все основные платформы. Подобно py2exe и py2app, он создает стандартный исполняемый файл в Windows и пакет приложений в OS X, но имеет то преимущество, что также выполняет фантастическую работу по автоматическому разрешению общих зависимостей и их включению без дополнительных настроек конфигурации.
Также обратите внимание, что если вы развертываете Python 2.6 в Windows, вы должны применить этот патч к магистрали Pyinstaller.
Вы указали, что вам не нужен установщик, но Inno Setup - это простой в использовании и быстрый в настройке вариант для платформы Windows.
источник
Hello world
программа займет 500 МБ места и время инициализации 3-5 секунд.Fredrik Lundh's
squeeze.py
может создать один файл, который не содержит интерпретатора Python, но вместо этого содержит байт-код. С правильными аргументами вы можете включать в файл результатов другие файлы, модули и т. Д. Я успешно использовал его в одном проекте. Полученная программа без проблем работала в OS X, Linux и Windows!PS : На каждой машине должен быть интерпретатор Python, совместимый с байт-кодом, сгенерированным squeeze.py. При необходимости вы можете сгенерировать разные версии байт-кода для разных версий Python (просто запустите squeeze.py с нужной версией Python).
источник
Я думаю, что также стоит упомянуть PEX (учитывая большее внимание, которое получил этот вопрос, а не сам вопрос). По собственному описанию :
Я наткнулся на это, когда читал обзор упаковки для python . Там выложили красивую картинку:
Подводя итог: если вы можете позволить себе полагаться на установку python на целевой машине, используйте PEX для создания самодостаточного «исполняемого файла», который, вероятно, будет иметь меньший размер файла, чем, например, исполняемый файл, созданный PyInstaller.
источник
Я могу ошибаться, но разве IronPython не имеет встроенного компилятора для Windows?
http://www.ironpython.net
[РЕДАКТИРОВАТЬ]
Попробуйте Cx_Freeze, лучший компилятор .py в .exe (плюс несколько .dll), который я когда-либо использовал.
http://cx-freeze.sourceforge.net/
источник
Если вы распространяете в Windows, используйте установщик, чтобы установить все необходимые файлы / интерпретатор. Распространите файл setup.exe. Это лучший способ для окон. В противном случае пользователи будут жаловаться.
источник
Самый удобный * кроссплатформенный способ распространения настольных приложений python - полагаться на кроссплатформенный менеджер пакетов conda. Его используют несколько инструментов:
* Самый удобный для разработчика. Достаточно удобно для конечного пользователя.
источник