Форум сайта python.su
Для тех, кто хочет упаковать свой проект на 3-м питоне в один исполняемый ехе-шник, то это можно сделать в 2 шага:
1) Собрать проект с помощью cx_Freeze. О том, как это сделать - информации можно найти достаточно.
2) Виртуализировать полученную в cx_Freeze структуру с помощью Enigma Virtual Box. Во-первых, программа бесплатная, во-вторых, разработчик не накладывает никаких лицензионных ограничений на получившийся исполняемый файл. В enigm-е нужно не забыть поставить галочку во вкладке “Опции” напротив “Копировать виртуальную систему во все дочерние процессы”, иначе работать не будет.
В итоге получается один исполняемый файлик и ничего “лишнего”. При исполнении ничего никуда не распаковывается. Остается свободный доступ к файловой системе: например, если в проекте встретится строка open('some_file'), то программа в таком виде сначала посмотрит в свою виртуальную файловую систему, и если там файла с таким именем не окажется, откроет его из реальной папки, в которой запустили ехе-шник.
Очень удобно. Всем спасибо.
Офлайн
evgen34
Для тех, кто хочет упаковать
evgen34К этому сладкому посту просится добавить ложку дегтя.
и ничего “лишнего”
Отредактировано doza_and (Май 22, 2014 18:06:57)
Офлайн
Уважаемый doza_and!
В вашем сообщении много правильных мыслей, но это выглядит так, что вы меня неправильно поняли. Эта тема открыта для того, чтобы поделиться опытом, в виде пожелания. Я никого не призываю виртуализировать всё подрят. Вы, наверно, смотрите на подобные решения, как специалист. Ваше негодование мне понятно.
В питоне я не силён, однако с удовольствием пишу для себя и своего окружения небольшие простые программки, в основном для повторяющихся или необычных действий с текстом или интернетом. Многие из друзей с компьютером “на Вы” и для них долго объяснять, зачем устанавливать какой-то интерпретатор, да и не нужно это. А програмка в одном еше-шнике для них понятна.
Из своего опыта скажу, что не всегда, но бывают случаи, когда программу так запаковать просто необходимо.
И если вы обратили внимание, ничего “лишнего” я написал в кавычках. Только как один из вариантов. Может кому пригодится.
Офлайн
evgen34Тут нет никакого негодования. Я попытался соблюсти равновесие. Чтобы люди наткнувшись на пост трезво оценили за и против. Я как и вы написал, что в некоторых случаях это может быть неплохим решением.
Ваше негодование мне понятно.
evgen34Это довольно слабый аргумент. По моему опыту что одну программу запустить что запустить setup.exe обе вещи одинаково воспринимаются. А друзьям программы ставишь обычно лично, они тебе доверяют и вообще ничего не спрашивают. Хоть 10 интерпретаторов ставь. Тыкают потом в ярлык и все.
Многие из друзей с компьютером “на Вы”
Отредактировано doza_and (Май 22, 2014 22:13:00)
Офлайн
Могу добавить, что программа в таком виде работает самостоятельно, а в процессе использования это свойство может оказаться полезным. Можно, например, пользоваться обычным скриптом, но в запасе иметь собранный пакет - на всякий случай, ведь все ситуации не предугадаешь. Лишним не будет.
Я не хочу сравнивать плюсы и минусы - в любом случае минусов больше. Главный из них - это убийство достоинства быстрой правки кода.
По-моему мнению, когда имеется под рукой запасной самостоятельный пакет, достоинства программы только увеличиваются: у ней появляются новые, дополнительные полезные свойства. При этом сохраняются те, которые были.
Офлайн
Мое мнение полностью совпадает с doza_and, хотя раньше сам упаковывал в .exe. Не буду лукавить. Но когда я перешел на никсы, я понял, что это не есть гуд. Убогая виндовская философия мне стала противна.
evgen34
Могу добавить, что программа в таком виде работает самостоятельно
Отредактировано 4kpt_II (Май 23, 2014 15:16:03)
Офлайн
4kpt_IIНе обязательно.
А Вы ей со временем начнете пользоваться обязательно.
4kpt_IIЕсли нет необходимости - не придётся.
А с базами как? Их все равно придется ставить!!!
4kpt_IIА вот здесь с вами совершенно согласен. Когда программа действительно нужная, работает, ей пользуются и результатами довольны, то не так важно, соблюдены ли стерильные условия, рекомендации специалистов, советы врачей и прочее-прочее… Виртуализация - это только как один из дополнительных вариантов, так сказать для работы в полевых условиях. И естественно, что не для крупных проектов.
Главное, чтобы программы были качественные, нужные и ценные…
Офлайн
evgen34Тогда будете кодить на коленке. Нужно привыкать пользоваться современными технологиями. Тем паче, если вы хотите писать нормальное ПО.
Не обязательно.
evgen34Сложно себе представить современное ПО без связи с БД. Тем более очень всем нужное
Если нет необходимости - не придётся.
Офлайн
Посмотрю. Спасибо
Офлайн
http://choorucode.com/2011/06/02/how-to-convert-python-script-to-exe-using-pyinstaller/
Можно же сдавить вот так
Converting a Python script into a EXE file is a convenient way to share it among other computers or users who do not have Python installed. PyInstaller makes this process really easy! Here is how:
Download and unzip PyInstaller. It is not a Python library, so it does not need to be installed into Python. Let us assume the unzipped files are placed in C:\PyInstaller
Open a Command Prompt in the PyInstaller directory and configure it using: python Configure.py
Open a Command Prompt in the directory containing your Python script (say Foo.py). I assume you want to convert it into a single EXE file. Create a spec file for Foo.py by using: python C:\PyInstaller\Makespec.py --onefile Foo.py This generates a Foo.spec file.
Build the EXE file for Foo.py by using: python C:\PyInstaller\Build.py Foo.spec
Your Foo.exe file is now ready for distribution and can be found in the dist directory! :-)
Tried with: PyInstaller 1.5, Python 2.7 and Windows 7
The command line I use to build my exe with pyinstaller is:
c:\python27\python.exe c:\pyinstaller\pyinstaller.py --noconsole --onedir --workpath="C:\Users\alan\Documents\python" "C:\Users\alan\Documents\python\piechart.py"
Change --onedir option to --onefile if you want a stand alone exe.
Отредактировано sypper-pit (Сен. 25, 2014 04:14:12)
Офлайн