Найти - Пользователи
Полная версия: запуск py-приложений везде
Начало » Python для новичков » запуск py-приложений везде
1 2
Jinn
Доброго времени суток, форумчане.
100% ответ на мой вопрос где-то есть, но несколько поисковых запросов в гугле и на форуме не дали плодов, поэтому решил спросить.

Суть проблемы: я написал консольное приложение на питоне. У меня на пк оно отлично работает, потому что питон был установлен. А если я его хочу отправить другу, что бы он запустил у себя? Можно ли как-то обойти ручную установку питона перед запуском? Например как-то построить это приложение, создав нужные файлы и ехе-шник. Или прикрутить какой-то сетап-файл, который сам установит питон перед запуском приложения. Вопрос наверное нубский, но не могу понять как.
JOHN_16
Jinn
вы ищите cx_freeze и подобные ему.
Kirill_Anisimov_+1
Попробуйте py2exe, это то что Вам нужно как я понял.
doza_and
JOHN_16
вы ищите cx_freeze и подобные ему.
Kirill_Anisimov_+1
Попробуйте py2exe, это то что Вам нужно как я понял.
Не согласен.
Читаем:
Jinn
Можно ли как-то обойти ручную установку питона перед запуском?
Ответ да.
Думаю ТС ищет бат файл с содержимым:
msiexec /i python-2.7.11.amd64.msi
copy you_file.py c:\windows\system32 
:)
Который надо запустить для “установки” вашего приложения.
https://technet.microsoft.com/en-us/library/cc759262(v=ws.10).aspx#BKMK_Install
Питон отлично установится не в ручном режиме. Для нормальных систем и этого не требуется, питон нам уже есть.

Для надежности можно слать 32 разрядный питон.

p.s.
вторая строчка конечно шутка.
JOHN_16
doza_and
Не согласен.
Читаем:
Jinn
Например как-то построить это приложение, создав нужные файлы и ехе-шник
я вот это понял как ни что иное как собранный cx_freeze проект
doza_and
Ключевое слово Например. Он предполагает что это можно делать так, но не требует.

Зачем несведущего человека учить бяке? Так он спокойно поставит другу питон и думать забудет об этой проблеме для всех своих скриптов. По поводу cx_freeze весь этот форум набит воплями о помощи. И супер спецы зачастую не могут сказать как его использовать для конкретного проекта.

Я еще могу понять желание использовать cx_freeze когда ваш скрипт тянет кучу бинарных зависимостей. Но если это простенькая консоль? Тогда зачем эти танцы?
JOHN_16
doza_and
как раз таки с простенькими консольными скриптами не надо даже setup.py делать - достаточно cx_freeze my_prog.py . Пусть Jinn выложит код программы, если конечно он захочет, и мы попробуем собрать его без танцев.
P.S. по мне так установить Питон лучшее решение, а каким способом … это уже другое. и не о том. и не важно.
P.P.S. ни в коем разе не являюсь каким либо фанатом cx_freeze и подобных тулзов. Просто в свое время мне понадобилось такое, и мне подошел именно cx_freeze
Jinn
JOHN_16
doza_andкак раз таки с простенькими консольными скриптами не надо даже setup.py делать - достаточно cx_freeze my_prog.py . Пусть Jinn выложит код программы, если конечно он захочет, и мы попробуем собрать его без танцев.P.S. по мне так установить Питон лучшее решение, а каким способом … это уже другое. и не о том. и не важно.P.P.S. ни в коем разе не являюсь каким либо фанатом cx_freeze и подобных тулзов. Просто в свое время мне понадобилось такое, и мне подошел именно cx_freeze

Вопрос был чисто гипотетическим. Просто если я напишу то, что посчитаю интересным и захочу показать, хотелось бы знать как) Допустим вот маленькая PygLatin.
while True:
        a = input("Enter a word: ")
        def piggin(a):
                return a[1:]
        if str.isalpha(a) == True:
                print (piggin(a).lower() + a[0].lower() + "ay")
        elif len(a) < 1:
                print ("Enter a word, please!")
        else:
                print ("Error!")
Jinn
doza_and
Думаю ТС ищет бат файл с содержимым:

msiexec /i python-2.7.11.amd64.msi
copy you_file.py c:\windows\system32


Который надо запустить для “установки” вашего приложения.
https://technet.microsoft.com/en-us/library/cc759262(v=ws.10).aspx#BKMK_Install
Питон отлично установится не в ручном режиме. Для нормальных систем и этого не требуется, питон нам уже есть.

Для надежности можно слать 32 разрядный питон.

p.s.
вторая строчка конечно шутка.

Можно поподробнее?
На ссылку зайти не смог, пишет “Unable to Service Request”.
И какая вторая строчка шутка? В батнике? С батниками и командами для них не знаком(
Как я понял можно создать bat-файл, который будет тем самым “инсталлятором”, который сам установит питон и запустит приложение?
doza_and
Jinn
На ссылку зайти не смог
Извините что-то криво пошло.
https://msdn.microsoft.com/ru-ru/library/cc759262(v=ws.10).aspx

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

*.py файлы можно запускать и без этих премудростей. Вы можете взять папку в которой лежит питон. Положить ваш скриптик рядом. и написать командный файл в котором прикажете запустить питоном ваш скрипт. Дальше архивируете и отдаете другу. Он распакует и будет пускать bat файл в котором прописан запуск вашего скрипта.

cx_freeze это продвинутый способ упаковать питон. Я им не пользовался, но судя по обсуждению в каждый экземпляр *.exe файла будет упакован весь интерпретатор (точнее нужная его часть).

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

Из минусов второго подхода. Если питон у вас общий, то потенциально возможен конфликт пакетов внутри питона. Т.е. один ваш скрипт требует наличия модуля X а другой его не переносит. Говорят так бывает. Я не встречал.

Есть еще кошерный путь. Создать инсталлятор, который при необходимости выкачает из интернета и установит питон. Windows отсталая система. Поэтом такой подход будет нормально работать начиная с windows 10. Только там появился наконец менеджер пакетов. Можно конечно залудить подобное и для старых виндов.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB