Найти - Пользователи
Полная версия: После сборки cx_Freeze'ом экзешник ругается на import win32print и win32ui
Начало » GUI » После сборки cx_Freeze'ом экзешник ругается на import win32print и win32ui
1 2 3 4
doza_and
a.bondarenko
да вот не могу никак сделать экзешник, чтобы передать (бесплатно) своим коллегам. Войдите, пожалуйста, в мое положение.
Да мы вошли в ваше положение. Вам сразу сказали что вы неправильно решаете задачу дистрибуции.
Пользователи вашей программы ДОЛЖНЫ поставить интерпретатор в свою систему. Далее вы можете распространять whl файл с использованием pip (если на целевых машинах есть интернет то будет чуть проще, иначе будет чуть сложнее).
Cделать правильно поможем, но если вы предпочитаете ерундой заниматься, после того как вам на это указали, то ковыряйтесь сами.
a.bondarenko
Уважаемый doza_and. Мне уже сказали, что я занимаюсь ерундой, предыдущие светлые умы, они предложили правильные подходы по сборке приложения и даже позволили скачать пример собранного приложения (Rodegast). Я пока не смог их реализовать в виду своей недостаточной подготовки к работе в этой среде. Но (!) вроде не было в их подходах требования, чтобы пользователи ДОЛЖНЫ поставить интерпретатор в систему. Я понимаю, что он нужен для работы приложения, но пользователь не должен делать это (устанавливать питон и другие расширения), он должен получить пакет (пусть будет он даже большой), в котором запускается некоторый файл, подготовить требуемые исходные текстовые файлы с контекстом учебной дисциплины, положить их в каталог, где находится исполняемый файл, и запустить его. Все. Экзамен начался.
Тем не менее ваше предложение я приветствую и прошу вас мне помочь “сделать правильно” так, как вы это видите. Я имею в виду расписать шаги, например, создание и использование whl файла и прочее. Спасибо.
FishHook
a.bondarenko
С вами трудно беседовать, потому что сложно спрогнозировать ваш уровень компетенций. С одной стороны вы уважаемый ученый муж со званиями и регалиями и с массой научных работ в информатике, с другой - налицо пробелы в начальных компьютерных знаниях, школьных я бы сказал.
Вот передо мной файл, в который я рандомно барабаня по клавиатуре набил три килобайта букв. Имеет ли этот файл какой-то смысл для операционной системы? Очевидно, нет. Но теперь я выполняю команду
chmod +x my_file_name
и всё - теперь он исполняемый, операционная система пометила его специальным флагом. Но можно ли его выполнить? Нет нельзя. Файл с программой на питоне для операционной системы точно такая же белиберда, и выполнить его может только интерпретатор. Как по вашему возможно выполнить программу на питоне, если на целевой машине нет программы-интерпретатора? Если вам нужна программа, которая выпоняется непосредственно операционной системой без посредников, то python неподходящий язык программирования для вашей задачи. Вам нужен С, С++, Go, Rust, pascal - они компилируются в формат исполняемого файла ОС - exe или ELF.
a.bondarenko
Уважаемый FishHook. Да, я все понял. Понял, что питон не предназначен для создания транспортируемых приложений. Скажу лишь в оправдание в отношении своих пробелов, что это в основном касается питона, я и предпринял попытку его изучить на старости лет (76 лет), ну и в качестве учебного упражнения разработать версию программы для генерации экзаменационных билетов по трем уровням на питоне. Я такую программу разработал, она нормально работает в IDLE (выводит вопросы, задачи, печатает, производит опрос и пр.). Подобную программу я разработал в свое время на Visual Basic в виде исполняемого файла с загрузкой библиотеки времени исполнения (а ведь Basic начинался с интерпретатора). По своей наивности думал, что можно и здесь малой кровью изготовить что-то в виде экзешника. Но не получилось (у меня).
Что касается моих начальных компьютерных знаний, это вы, пожалуй, зря. Я ведь, будучи доцентом кафедры теоретической механики, не только программировал на многих языках (Algol, Focal, многие модификации Basic, Fortran, Director (скрипты), Flash и др., которые ушли или уходят в лету), но и преподавал (по совместительству, как хобби) на кафедре информатики. Знаю разницу между интерпретатором и компилятором. Но все эти мои оправдания ничего не оправдывают. Хочу попросить у вас и у всех, кто принимал во мне участие, прощения, что отнял некоторое время и причинил какие-либо неприятия, вызывал негативные эмоции. Простите, коллеги. Всего всем доброго! Ура российским программерам!
Думаю, что уважаемый “смотрящий” может закрыть эту тему, чтобы не отвлекать других членов сообщества от действительно стОящих дел. Всем спасибо.
FishHook
a.bondarenko
Понял, что питон не предназначен для создания транспортируемых приложений.
Еще как предназначен. Вот как по-вашему, программы написанные на Java или С# предназначены для “транспортируемых” приложений? Было бы странно ожидать, что нет. Тем не менее, ни тот ни другой код нельзя запустить без наличия соответствующей виртуальной машины на целевом компьютере. JavaScript, Ruby, Perl, Erlang - какая из этих программ “транспортируется” без наличия интерпретатора? Никакая. Упоминаемый вами Flash, кстати, без бубна тоже не запустишь. И заметьте, никого же ведь не парит, что java-программы, это не экзешники. Это цена кроссплатформенности.
Вообще, очень похоже, что вам нужно веб-приложение. Питон с этим, кстати, очень здорово справляется. Тогда не надо будет ничего никуда переносить, копировать и устанавливать. Таковы вообще реалилии современной жизни - почти всё работает в сети, даже наше с вами общение.
a.bondarenko
Уважаемый FishHook. Я имел в виду, что “транспортируемый” это такое приложение, которое можно записать, например, на флешку, ее воткнуть в любой комп, открыть исполняемый файл и порядок. Да я знаю, что Flash-ролик не проигрывается без Flash-плеера, но это как бы инструмент (плеер, еще тот бубен, есть проблемы), который есть всегда на любом компе, а если нет, то легко загружается из интернета.
Я вроде уже и распрощался с вами (и с мечтами запустить свою приладу на питоне, например, с флешки на любом компе), но продолжаю все же писать, чтобы поддержать беседу. Я с вами полностью со всем согласен. Просто добавлю, что у меня нет такой задачи, чтобы приложение, о котором идет речь, работало через интернет. Ведь пока не каждая классная аудитория имеет связь с интернетом или локальной сетью. Я приходил в аудиторию (это было в начале века - 2004 год) с небольшим компом (это был не ноутбук, а специализированный промышленный комп) и небольшим струйником и принимал экзамены по теоретической механике, используя то приложение о котором я говорил (студентам нравилось). Бог с ним, с приложением, но я многое узнал для себя нового и необычного (для меня), изучая питон и общаясь с вами всеми. Буду продолжать изучать в меру своих сил. Спасибо.
Rodegast
> Я имел в виду, что “транспортируемый” это такое приложение, которое можно записать, например, на флешку, ее воткнуть в любой комп, открыть исполняемый файл и порядок.

Ну я как раз и описал как его создать. По сути нужно таскать интерпретатор вместе со своим приложением и исполняемым файлом, вот и всё.

> пользователь … должен получить пакет (пусть будет он даже большой), в котором запускается некоторый файл, подготовить требуемые исходные текстовые файлы с контекстом учебной дисциплины, положить их в каталог, где находится исполняемый файл, и запустить его. Все. Экзамен начался.

Вы тут абсолютно правы, именно так оно и будет работать.
FishHook
a.bondarenko
но это как бы инструмент (плеер, еще тот бубен, есть проблемы), который есть всегда на любом компе, а если нет, то легко загружается из интернета.

И вот мы пришли к сути вопроса! Чем же интерпретатор питона не “инструмент который легко загружается из интернета”? Более того в большинстве дистрибутивов линукса и в МакОС есть из коробки. Легко загружается, устанавливается и в дальнейшем работает как “проигрыватель” *.py - файлов.
a.bondarenko
Rodegast. Вам отдельное спасибо за участие. У меня есть к вам некоторые вопросы, но о них позже.
py.user.next
a.bondarenko
Я вроде уже и распрощался с вами (и с мечтами запустить свою приладу на питоне, например, с флешки на любом компе), но продолжаю все же писать, чтобы поддержать беседу. Я с вами полностью со всем согласен. Просто добавлю, что у меня нет такой задачи, чтобы приложение, о котором идет речь, работало через интернет.
Возьми любую программу у себя в винде. Как она попала в систему? Тот же Microsoft Word или Microsoft Excel (это совершенно разные программы), разве они представляют из себя один экзешник? Чтобы их использовать, их нужно установить из дистрибутива. Ты ставишь пакет (пакет программ) Microsoft Office и эти разные программы ставятся к тебе в систему. Приди к понятию дистрибутива и тебе станет всё равно, один там экзешник или не один, находятся ли все функции в нём или лежат отдельно в библиотеках функций, подключаемых динамически (dll - dynamic link library).

Что из себя представляют программы класса cx_Freeze: они просто берут питон и твои скрипты, складывают в один самораспаковывающийся архив и потом он при каждом запуске на время распаковывает питон и твои скрипты и эти скрипты запускаются в этом питоне.

Почему нужно прийти к дистрибутиву, а не стараться засовывать всё в один экзешник:
1)
Засовывание в один экзешник накладывает множество ограничений на твою программу. Чтобы её поменять, если ты нашёл в ней баг, тебе надо её заново собирать и заново распространять через копирование. То же самое касается того питона, если в нём баг нашли и тебе надо его обновить. То есть при любой мелочи, даже не относящейся к твоей программе, тебе придётся её всю заново распространять. Если же ты собрался дорабатывать программу (а программы никогда не заканчиваются, ты всегда просто находишься в какой-то её версии), может запросто потребоваться вторая программа, так как нельзя всё в одной программе лепить. И что ты будешь делать, второй архив со второй копией питона? Рано или поздно десяток программ из твоего пакета разрастётся до гигабайта только потому, что всё пространство ушло на одни и те же десять копий питона. Это и есть ограничения одного экзешника - ты думал сделать получше, а получилось, что затормозил развитие программы. Это как Word и Excel были бы в одном экзешнике.
2)
Дистрибутив точно так же можно сделать одним исполняемым файлом setup.exe. Посмотри на те программы, которыми ты пользуешься, все профессиональные программы (не самоделки от отдельных авторов, а продукты от компаний, даже мелкие продукты, плагины к браузеру и тому подобное) распространяются в виде установщиков, которые ты скачиваешь, запускаешь и он дальше сам всё устанавливает и вся эта программа прописывается в системе везде правильно (а часто это надо сделать по всей системе и в разных её местах) и точно так же там есть деинсталлятор, который умеет делать всё обратно. Ты пойми, то, что твоя программа не регистрируется в реестре винды, - это вопрос времени. Завтра тебе надо будет сначала её зарегистрировать в реестре, прежде чем запускать, и всей этой процедуры не должно быть внутри программы, этим должен будет заниматься отдельный установочный скрипт. Те же конфигурационные файлы программы (а рано или поздно они появляются, чтобы учесть все пожелания всех пользователей) должны ставиться в правильные места, которые предварительно должны проверяться на право записи в директорию или в ветку реестра. Этим всем сама программа не должна заниматься, этим должен заниматься специальный скрипт из установщика. Установщики сами по себе бывают такими сложными, что сами становятся целыми комплексами программ и скриптов.

Поэтому не надо всё класть в один экзешник. Разделяй и властвуй. Каждый сверчок должен знать свой шесток - каждая программа или мелкий скрипт должны заниматься только своим делом.


tags: distribution
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