Я ничего не знаю по этому вопросу, но мне нужны предложения о лучших инструментах или методах создания установочной программы, которая устанавливает python, некоторые настраиваемые модули python, некоторые другие модули python, такие как PIL и некоторые зависимости EXE, все проживающие в сетевом репозитории, на машинах для окон. В репозитории находятся установщики для python (файл msi), PIL (exe файл), пользовательские модули python (файлы pyc) и два исполняемых файла Windows (и exe файл и zip файл). Любые советы приветствуются.
спросил(а) 2012-10-25T04:00:00+04:00 10 лет, 8 месяцев назад
добавить комментарий
пожаловаться
Вы можете сделать это с помощью любого из приложений-установщиков. У каждого из зависимых установщиков есть опция автоматической установки, поэтому вашему установщику просто нужно вызвать установщиков для каждой из зависимостей в правильном порядке.
Я не буду рекомендовать какое-либо приложение для установки Windows, в частности, потому что мне не нравится ни один из них, но все они будут делать то, что вы хотите. Другой вариант, который у вас есть, — это использовать py2exe, который может объединить все в один exe файл, который работает в собственной среде python.
Как создать свой инсталлятор? Smart Install Maker
Плюсом к этому является то, что вам не нужно беспокоиться об установке Python в среде пользователей и иметь возможность потенциально удалить python пользователя, а затем прекратить работу вашего приложения, потому что все находится в автономной среде. Другие способы, которые я видел, это сделать с пользовательским exe, написанным на любом скомпилированном языке Windows, который вы предпочитаете, который делает все это для вас, но для этого требуется много работы.
Вы также можете получить преимущество маршрута py2exe с небольшой работой над установщиком, который вы пишете либо с помощью приложения-установщика, либо с автономным exe, который обрабатывает установку, вручную размещая python.exe, dll и связанный код в соответствующих каталогах относительно на ваш код приложения. Возможно, вам придется столкнуться с настройкой среды PYTHONPATH, когда ваше приложение начнет все работать, но вам не нужно беспокоиться об установке Python и о том, установлен ли пользователь уже на Python или если он их удаляет, потому что тогда у вас есть Версия Python, которая вам нужна в комплекте с вашим приложением. Следует отметить, что если вы беспокоитесь о размере, сам установщик Python составляет около 10 МБ до любых зависимостей, но многое из этого не имеет отношения к конечному пользователю, использующему ваше приложение. Установщик среды выполнения Python не существует, как есть установщик среды выполнения Java, который просто устанавливает то, что вам нужно для запуска Python, вы всегда получаете инструменты для разработки. Надеюсь, это немного поможет.
ответил(а) 2012-10-25T04:23:00+04:00 10 лет, 8 месяцев назад
добавить комментарий
пожаловаться
Хороший ответ Майкл. Но py2exe может запугать более начинающего пользователя, для них может быть проще использовать pyinstaller 1.5.1 (там доступен 2.x, но он сложнее, хотя он имеет простую и мощную подсистему библиотеки [которая, скорее всего, не будет необходимость]). Все требования к pyinstaller должны быть настроены (Automatic with Configure.py) и основной исходный файл вашего исполняемого файла, и он позаботится обо всем остальном. После загрузки pyinstaller вы можете установить его как переменную среды, и теперь вы можете сделать исполняемый файл примерно в трех строках в пакете или cmd. Обычно у меня есть пакетный скрипт, который позволит мне легко изменить несколько меток, отбросить скрипт в выбранном мной каталоге и сделать исполняемый файл одним щелчком мыши. Ваш скрипт может выглядеть примерно так:
Python в EXE
python %pyinstaller%/Configure.py
python %pyinstaller%/Makespec.py -F —icon=C:PathToMyIcon.ico -n ExecutableName
C:PathToSourceMain.py
python %pyinstaller%/Build.py ExecutableName.spec
Кроме того, вам может потребоваться включить псевдо-паузу, если Build.py вызывается до того, как будет доступен файл спецификации. Я поставил эту строку:
ping -n 2 127.0.0.1>nul
Между каждой командой% pyinstaller%, чтобы убедиться, что ничего не вызывается до того, как она будет готова, и потому что для «паузы» требуется, чтобы ключевая запись продолжалась. «-n 2» приостанавливает сценарий в течение 1 секунды, прежде чем продолжить. После запуска скрипта он создаст два каталога (Build и dist).
Ваш автономный исполняемый файл будет находиться в папке «dist». Я использовал это для всех своих приложений и никогда не испытывал проблем, за исключением использования с PyMC. У этого был вызов импорта библиотеки мусора в одном из модулей, который остановил все поисковые устройства модуля после следующего импорта, даже py2exe не сработает.
Если вы столкнетесь с чем-то подобным, вам, скорее всего, придется перейти в исходный код модуля и исправить мусор. * Шансы на это очень тонкие для большинства библиотек * — Редактировать (2 минуты спустя) — После повторного чтения вашего вопроса после публикации, кажется, вы хотите, чтобы фактический установщик. Я бы предложил использовать pyinstaller, чтобы сделать ваш исполняемый файл python.
Созданный EXE будет включать в себя любые импортные операции в главном скрипте, поэтому вам не придется включать физические установщики для python, PIL, настраиваемые модули в основной программе установщика (до тех пор, пока они указаны в вашем скрипте). Теперь самое интересное: Вы захотите установить InnoSetup. Это бесплатная программа с открытым исходным кодом, используемая для разработки профессионально выглядящих инсталляторов для окон. Для главного установщика потребуется запустить скрипт. Это может потребоваться некоторое чтение в синтаксисе, но я постараюсь изо всех сил дать вам шутку. Синтаксис скрипта похож на Pascal, и в этом скрипте обычно используется 6 разделов, которые используются в установщике: [Setup], [Files], [Tasks], [Icons], [Run] и [Code] Раздел [Setup] содержит всю базовую информацию о вашем установщике:
[Setup]
AppId=
OutputDir=.
OutputBaseFilename=MyInstaller
AppName=ExecutableName
AppVersion=1.0
AppPublisher=YourCompany
AppPublisherURL=http://www.URL.com
AppSupportURL=http://www.URL.com
AppUpdatesURL=http://www.URL.com
DefaultGroupName=A_GroupName
LicenseFile=C:PathToYourLicense.txt
DefaultDirName=MainDirName
WizardImageBackColor=$00001a
SetupIconFile=C:PathToIcon.ico
Compression=lzma
SolidCompression=yes
-
Примечание. То, что AppID уникально для вашего приложения, если вы создаете новую версию, этот идентификатор должен быть одинаковым, или установщик установит отдельный exe, и есть хорошие шансы, что деинсталлятор сломается.
[Files]
Source: C:Pathtomycreatedpythonexecutable.exe; DestDir: ; CopyMode: alwaysoverwrite;
Source: C:Pathtodirectoryoffiles; DestDir: ; CopyMode: alwaysoverwrite; Flags: recursesubdirs;
-
Ключ здесь, в первом источнике destdir, является ссылкой на место назначения приложения. Клавиша сохранит все файлы в моем каталоге, указанные в файле данных локального приложения пользователей, на который может ссылаться приложение python.
[Tasks]
Name: «desktopicon» Description: «»; GroupDescription: «»;
Раздел [Иконки] довольно понятен и может быть просмотрен в онлайн-документах (также этот пост становится слишком длинным) Последний раздел [Код] Этот раздел не является полностью необходимым, так как установщик будет работать в режиме по умолчанию без него. Но если вы хотите создать более сложный установщик, вот где вы это сделаете.
Это раздел, который может обрабатывать обычный программист, но если у вас есть фон с Pascal, это действительно поможет. Здесь вы можете создавать пользовательские окна, устанавливать настройки AfterInstall и BeforeInstall (например, проверять реестры, если определенные программы уже установлены, иначе запустите другой установщик, прежде чем продолжить) — Редактировать 2 — В спешке я забыл про раздел [Run]. Раздел [Run] дает пользователю возможность запускать приложение сразу после установки. Ниже приведен пример, на котором будет отображаться флажок на последней странице, которая первоначально не отмечена, чтобы пользователь мог выбрать, хотите ли они запускать программу.
[Run]
Filename: «ExecutableName.exe»; Flags: nowait postinstall unchecked
Источник: progi.pro
Python-сообщество
- Начало
- » Python для новичков
- » Создание инсталлятора под винду
#1 Ноя. 16, 2009 00:12:30
Создание инсталлятора под винду
Собственно, вопрос не совсем по питону, даже совсем не по питону, однако ж, думаю, многие с этим сталкивались. Нужно создать удобный инсталлятор под windows для программы на питоне, включив в него при этом интерпретатор питона, PyQt4 и еще пару модулей, все в .exe. Я все присматриваюсь к NSIS, но никак не соображу, как из-под него запустить инсталляторы для питона и модулей, да потом еще и прописать переменные окружения для чужой установки, даром что питон сам этого не делает. У кого есть опыт создания подобных инсталляторов? Какую систему лучше использовать и как?
Отредактировано (Ноя. 16, 2009 00:15:35)
#2 Ноя. 16, 2009 01:47:47
Создание инсталлятора под винду
А нельзя скомпилить прогу со всеми модулями в один ехе и одного его запихнуть в простейший инсталлер?
#3 Ноя. 16, 2009 10:01:07
Создание инсталлятора под винду
pasaranax
Сам хотел так сделать, но вот не получается. Зависимости все вроде удовлетворил, но программа при щелчке по экзешнику просто не запускается, не выдавая никаких ошибок. При этом если запустить py-файл — работает отлично.
Отредактировано (Ноя. 16, 2009 10:01:30)
#4 Ноя. 16, 2009 10:24:22
Создание инсталлятора под винду
Хм… Для начала собери нормально в py2exe, убедись в работоспособности, а потом делай инсталлер. На каком этапе проблема? Инсталлер грубо говоря, просто распихивает файлы по папочкам…
Отредактировано (Ноя. 16, 2009 10:26:47)
#5 Ноя. 16, 2009 10:47:54
Создание инсталлятора под винду
igor.kaist
Тут какая проблема — раньше все нормально собиралось и запускалось, но почему-то при переносе на чистую систему выдавало “Приложение некорректно настроено, переустановите его”. Сейчас же просто перестало запускаться, без всяких ошибок.
#6 Ноя. 17, 2009 12:01:57
Создание инсталлятора под винду
Enchantner
igor.kaist
Тут какая проблема — раньше все нормально собиралось и запускалось, но почему-то при переносе на чистую систему выдавало “Приложение некорректно настроено, переустановите его”. Сейчас же просто перестало запускаться, без всяких ошибок.
посмотрите какие dll требуются для работы программы, возможно на чистую систему необходимо установить дополнительные билиотеки из состава VisualStudio, как вариант http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf Configure.py
Теперь для теста в папке D:test создай питоновский скрипт test.py:
print «OK»
open(«ok.txt», «w»).write(‘ok’)
Создание exe-шника проходит в два этапа. Сначала скриптом Makespec. py записывается файл «spec» с параметрами «компиляции», а затем — скрипт Build.py создает непосредственно экзешник. Скрипт Makespec.py, кроме пути к py-файлу принимает много разных параметров, но нам важны лишь эти:
• «F», на выходе получим один лишь exe-шник;
• «w», не показывать консоль, без этого параметра по умолчанию программа запускается с консольным окном;
• «X», использовать UPX для сжатия exe;
• «—icon=file.ico», использовать указанную иконку.
Во время разработки желательно использовать только один параметр («F») с целью создания отладочного режима, — чтобы в результате получился один файл и окно, в котором мы бы видели свои ошибки. Проверяем и компилируем:
D:pyinstaller> Makespec.py -F -w -X d:testtest.py
D:pyinstaller> Build.py d:pyinstallertesttest.spec
Несколько секунд ожидания… готово! Результат работы покоится в папке d:pyinstallertestdist. Наш test.exe получился размером в 2.4 Мб, и, если его запустить, то может показаться, что ничего не сработало — окна нет. Однако ok.txt создается, а значит, все отлично работает.
Запускайте .exe через ком.строку ,что бы видеть какие ошибки выдает и по мере необходимости добавляйте модули
Если надо увидеть что пишет в окне шелла и закрывается то набираем program.exe /print c: doc1.txt
Ну или просто запускаем прогу ехе из ком строки питона и тогда будет видно какие ошибки выдает окно шелла при запуске проги,каких может модулей не хватает
from cx_Freeze import setup, Executable
includes = [‘zlib’, ‘zipfile’, ‘gzip’,’zipimport’]
GUI2Exe_Target_1 = Executable(
script = «adcvasc.py»,
base = ‘Win32GUI’,
compress = False,
copyDependentFiles = True,
appendScriptToExe = False,
appendScriptToLibrary = False,
icon = None
)
setup(
name = «hello»,
version = «0.1»,
executables = [GUI2Exe_Target_1],
options = «base»: «Win32GUI»,
«packages»: «zipimport»,
«copy_dependent_files»: «True»,
«includes»: includes
>
>
)
Еще есть Nuitka,но с этим я так и не разобрался в свое время
Да и py2exe тоже можно собирать,главное правильно
Приступим к созданию exe файла. Создадим файл setup.py.
Содержание файла setup.py:
from distutils.core import setup
import py2exe
setup(console=[‘access.py’])
access.py – имя нашего скрипта авторизатора.
Чтобы создать ехе файл, выполним команду python setup.py py2exe.
В процесс создания ехе файла были созданы две директории: build и dist. Нам понадобится только dist.
Переходим в директорию dist. Выбираем файл access.exe и запускаем его.
при проблеме если при запуске ехе пишет типа нет модуля то добавляем модули так
from distutils.core import setup
import py2exe
setup(
windows=[],
options= ‘py2exe’:
‘includes’: [‘lxml.etree’, ‘lxml._elementpath’, ‘gzip’],
>
>
)
в файл setup.py
Отредактировано sanodin (Май 26, 2012 11:00:04)
Источник: python.su
pyinstaller 5.13.0
PyInstaller bundles a Python application and all its dependencies into a single package.
Навигация
Ссылки проекта
Статистика
Метаданные
Лицензия: GNU General Public License v2 (GPLv2) (GPLv2-or-later with a special exception which allows to use PyInstaller to build and distribute non-. )
Метки packaging, app, apps, bundle, convert, standalone, executable, pyinstaller, cxfreeze, freeze, py2exe, py2app, bbfreeze
Требует: Python =3.7
Сопровождающие
Классификаторы
- Development Status
- 6 — Mature
- Console
- Developers
- Other Audience
- System Administrators
- OSI Approved :: GNU General Public License v2 (GPLv2)
- English
- MacOS :: MacOS X
- Microsoft :: Windows
- POSIX
- POSIX :: AIX
- POSIX :: BSD
- POSIX :: Linux
- POSIX :: SunOS/Solaris
- C
- Python
- Python :: 3
- Python :: 3 :: Only
- Python :: 3.7
- Python :: 3.8
- Python :: 3.9
- Python :: 3.10
- Python :: 3.11
- Python :: 3.12
- Python :: Implementation :: CPython
- Software Development
- Software Development :: Build Tools
- Software Development :: Interpreters
- Software Development :: Libraries :: Python Modules
- System :: Installation/Setup
- System :: Software Distribution
- Utilities
Описание проекта
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.
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, macOS, 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 3.7-3.12.
- 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, PyQt5, PySide2, PyQt6, PySide6, 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.)
- Works with code signing on macOS.
- Bundles MS Visual C++ DLLs on Windows.
Installation
PyInstaller is available on PyPI. You can install it through pip :
pip install pyinstaller
Requirements and Tested Platforms
- Python:
- 3.7-3.12. Note that Python 3.10.0 contains a bug making it unsupportable by PyInstaller. PyInstaller will also not work with beta releases of Python 3.13.
- PyInstaller should work on Windows 7 or newer, but we only officially support Windows 8+.
- Support for Python installed from the Windows store without using virtual environments requires PyInstaller 4.4 or later.
- GNU libc based distributions on architectures x86_64 , aarch64 , i686 , ppc64le , s390x .
- musl libc based distributions on architectures x86_64 , aarch64 .
- ldd: Console application to print the shared libraries required by each program or shared library. This typically can be found in the distribution-package glibc or libc-bin .
- objdump: Console application to display information from object files. This typically can be found in the distribution-package binutils .
- objcopy: Console application to copy and translate object files. This typically can be found in the distribution-package binutils , too.
- Raspberry Pi users on armv5 — armv7 should add piwheels as an extra index url then pip install pyinstaller as usual.
- macOS 10.15 (Catalina) or newer.
- Supports building universal2 applications provided that your installation of Python and all your dependencies are also compiled universal2 .
Usage
Basic usage is very simple, just run it against your main script:
pyinstaller /path/to/yourscript.py
For more details, see the manual.
Untested Platforms
The following platforms have been contributed and any feedback or enhancements on these are welcome.
- FreeBSD
- ldd
- ldd
- objdump
- AIX 6.1 or newer. PyInstaller will not work with statically linked Python libraries.
- ldd
Before using any contributed platform, you need to build the PyInstaller bootloader. This will happen automatically when you pip install pyinstaller provided that you have an appropriate C compiler (typically either gcc or clang ) and zlib’s development headers already installed.
Support
- Official debugging guide: https://pyinstaller.org/en/v5.13.0/when-things-go-wrong.html
- Assorted user contributed help topics: https://github.com/pyinstaller/pyinstaller/wiki
- Web based QA forums: https://groups.google.com/g/pyinstaller
Changes in this Release
You can find a detailed list of changes in this release in the Changelog section of the manual.
Источник: pypi.org