Найти - Пользователи
Полная версия: Автоматическое завершение программы
Начало » Python для новичков » Автоматическое завершение программы
1
8toni8
Написал программку которая крутится в цикле(код не хотелось бы выкладывать). Но надеюсь, что это и не важно.
Скомпелировал байт-код таким образом:
 import py_compile
py_compile.compile("main.py")
py_compile.compile("twofile.py")
Не знаю кстати, правильно ли это или нет?
Запускаю программу под Windows Server, с помощью bat-файла:
“start python main.pyc”
Программа запускается в “командной строке”, заходит на почтовый сервер, копирует письмо, производит разбор сообщения и так по кругу, с небольшими тайм аутами…
Если сообщений нет, ждет когда появятся…
Собственно не чего не обычного.
Но по прошествии нескольких часов, командная строка просто закрывается…
Подскажите пожалуйста, может быть я не правильно запускаю программу? Как это можно продиагностировать(то есть узнать причину автоматического завершения). Или посоветуйте, что почитать на эту тему?
PEHDOM
самое простое обьяснение в какойто момент вызываеться исключение, логирейте все исклчения в файл и смотрите.\
https://stackoverflow.com/questions/8050775/using-pythons-logging-module-to-log-all-exceptions-and-errors
doza_and
PEHDOM
логирейте все исклчения в файл
8toni8
одскажите пожалуйста, может быть я не правильно запускаю программу?
Запустите консоль ручками, уберите start :python main.pyc. Тогда у вас останется открытая консоль и в ней будут видны сообщения.

Не очень понятно зачем компилировать? Питоновские файлы и так прекрасно запустятся.
8toni8
doza_and
Запустите консоль ручками, уберите start :python main.pyc. Тогда у вас останется открытая консоль и в ней будут видны сообщения.
Да, я пока создавал тему, уже понял, что нужно в IDLE запустить, уже кстати выловил ошибку, буду разбираться…
doza_and
Не очень понятно зачем компилировать? Питоновские файлы и так прекрасно запустятся.
По, тому что я пока не понимаю, надо вообще компилировать свои файлы в байт-код? А как вообще можно сделать код закрытым? В Си++, там понятно, откомпелировал и все. А с Питоном как быть не понятно
doza_and
8toni8
А как вообще можно сделать код закрытым?
Короткий ответ - никак. Вы выбрали не тот язык если хотите секретить код. pyo файлы легко декмпилируются и по сути от исходников отличаются только отсутствием комментариев.

p.s.
Вы на форуме предложите. Даю свой исходный код. Цена вопроса 100…0 руб. Посмотрите сколько будет желающих его получить. Подозреваю что даром не возьмут. Так что и секретить тут вам пока нечего.
8toni8
Ну а если например пишите программу для заказчика на Python, то как вы себя обезопаситиваете к примеру от “кидка”? Ведь заказчик сможет крутить ваш код как хочет…
PEHDOM
давайте для начала определимся с терминами “от “кидка” и ”крутить ваш код как хочет“.что вы конкретно хотите?
Эту проблему можно разделить на несколько частей юридическую,комерческую, психологическую и техническую.
Юридическая понятно, заранее договариваетесь и прописываете в договоре, что кому и в каком порядке передает и оплачивает, у кого остаются исключительные права на программу и прочее.. например что исходники вы передаете только после подписи заказчиком акта, где указывается степень готовности программы, и сумму которую заказчик вам за это обязуется оплатить. По крайне мере с этой бумагой вы можете пойти в суд, если конечно заказчик проживает с вами в одной стране, а не находиться гденить на голопагоских островах. В любом случае вам нужна консультация юриста по этому вопросу а не програмиста.

Комерческая: Лицензии. Контракты. Условия и положения. Это все еще работает, даже когда люди могут читать код. Обратите внимание, что некоторые из ваших компонентов на базе Python могут потребовать, чтобы вы платили комиссионные, прежде чем продавать программное обеспечение с использованием этих компонентов. Кроме того, некоторые лицензии с открытым исходным кодом запрещают вам скрывать источник или источник этого компонента.

Психологическая основывается на том что в общем в большинсвтве случаев в этом мире все основывается на доверии. Заранее проверте заказчика, поищите отзывы о нем, пообщайтесь с теми кто раньше работал с ними и просто не связывайтесь с ненадежными людьми.

Техническая часть во многом зависит от того что вы делаете и что вы хотите?
1. Быть единственным ”погромистом" у которого есть исходники и который может вносить изменения в функционал? Для этого вы выбрали не тот ЯП . Хотя есть шифрование и трансляция в модули расширения с помощью Cython или Nuitka.
вот пару статей на эту тему:
https://habr.com/post/138537/
https://habr.com/post/189772/
Правда для этого вам нужно сразу писать код с оглядкой на это. Мой опыт работы с Nuitka говорит о том что то что произвольно написаный код работающий в пайтоне не всегда также работает после трансляции.

2. Чтобы заказчик заплатил вам, а не сказал ну мы посмотрим сейчас, протестируем, а сам исчез с вашим кодом?
Тут во многом зависит от того что вы делаете. Если это сайт какой на джанге, фласке, бутылке и тому подобному, то просо не давайте исходники. Давайте только адрес сайта на посмотреть снаружи. Заказчик заходит, нажимает кнопочки формочки, если его устраивает производит оплату и получает исходники.
Другое дело если вы пишете самостоятельную программу, или модуль к уже существующей программе.
тогда можно давать ограниченый удаленный доступ чтобы заказчик мог подключиться к удаленному хосту запустить-протестировать на нем программу\модуль, но не мог скопировать исходники.

НО всеже ИМХО, главное не связывайтесь с ненадежными заказчиками, как бы вам ваша внутрення жаба не говрила обратное. Несмотря на все ваши заморочки, договоры, и технические ухищрения, “кидала” когда поймет что кинуть не выйдет, всеравно не заплатит , а просто пойдет искать другого лоха, а вы потратите на него свое время и нервы.




Rodegast
> А как вообще можно сделать код закрытым?

В этом тебе поможет cython.
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