Найти - Пользователи
Полная версия: Компиляция приложений
Начало » Mobile Python » Компиляция приложений
1 2
nJLyTo
Существют ли какие-нибудь основные правила компиляции приложения? Возможно, что есть ограничения на размер компилируемого файла…

Для себя я выяснил, что скрипт должен быть:
1. В utf-8 без BOM
2. В Unix формате
arok
utf не обязательно, но хорошим тоном считается писать все в утф. Перенос строки тоже не важно в каком формате. Правил тоже не как таковых не существует, компилировать есть смысл большие скрипты, при этом время загрузки приложения значительно сокращается, даже на глаз заметно. Причем компиляция с оптимизацией так же благотворительно сказывается на времени запуска приложения.
nJLyTo
Хм, а мне казалось, что это не так уж просто.

Дело в том, что компилирую я на телефоне используя py_compile от “старшего брата”. Маленькие скрипты он легко компилируют, но вот с одним из моих файлов возникли проблемы - при запуске pyc файла появляется ошибка Invalid Syntax. При том, что py файл нормально работает.
nJLyTo
arok
есть смысл большие скрипты, при этом время загрузки приложения значительно сокращается
именно поэтому я и хочу разобраться с этим
arok
так как на смарте версия питона 2.2.2, то я полагаю и модуль py_compile вы взяли от одноименной версии с бб, следовательно ошибок возникать не должно. Ошибки иногда встречаются если в скрипте присутствуют одинарные обратные слеши, проверьте свой код. Ну и что мешает вам компилировать на компе, установив версию питона 2.2.2, тем более там есть возможность компиляции с оптимизацией.
nJLyTo
arok
так как на смарте версия питона 2.2.2, то я полагаю и модуль py_compile вы взяли от одноименной версии с бб
не совсем так, модуль я брал с версии 2.5, при этом, некоторые файлы мне все же удалось нормально компилировать

arok
Ну и что мешает вам компилировать на компе, установив версию питона 2.2.2
вчера попробовал эту версию- компиляция прошла успешно, но файл так и не запускается:
Traceback (most recent call last): )  File "C:\private\2000b1a5\default.py", line 81, in menu_action )    f() )  File "C:\private\2000b1a5\default.py", line 65, in query_and_exec )    execfile(script_list[index][1].encode('utf-8'), script_namespace.namespace) )  File "e:\python\dfgdgf.pyc", line 2 )     )PJc )     ^ ) SyntaxError: invalid syntax
Теперь у меня даже не получается компилировать элементарный hello world
import appuifw
appuifw.note(u"Hello world", "info")
arok
Модуль лучше взять от версии 2.2, потому как в более поздних версиях присутствуют различия в байт-коде. Покажите как вы пытаетесь компилировать.
nJLyTo
Установливаю Питон версии 2.2.2

В блокноте создаю файл hello_world.py такого содержания:
import appuifw
appuifw.note(u"Hello world", "info")
Запускаю батничек:
C:\Python22\python.exe Compile_all.py > results.txt

где, Compile_all.py это:
import compileall
compileall.compile_dir("c:\\project", force=1)
Получаем наш заветный pyc файл =)
Listing c:\project ...
Compiling c:\project\hello_world.py ...
Кидаю файл в e:\\Python и пробую запустить через консоль:
Python for S60 is Copyright (c) 2004-2007 Nokia.
Version 1.4.5 final©Traceback (most recent call last):
File "C:\private\2000b1a5\default.py", line 81, in menu_action
f()
File "C:\private\2000b1a5\default.py", line 65, in query_and_exec
execfile(script_list[index][1].encode('utf-8'), script_namespace.namespace)
File "e:\python\hello_world.pyc", line 2
При компиляции на телефоне аналогичная ситуация, разница лишь в том, что ошибку он мне показывает в первой строке.
nJLyTo
Кажется, я смог разобраться, в чем была моя ошибка. ScriptShell просто не запускает pyc файлы, т.к. код он пытается выполнить через exec. Я сейчас попробовал запустить hello_world через другой скрипт:
import sys
sys.path += ['''e:\\Python''']
import hello_world
И он сработал! Но, при повторном запуске я получаю те же ошибки, что и до этого. Перед повторным запуском необходимо выйти из ScriptShell и запустить его снова.
arok
Само собой разумеется, что через “Run script” компилированый файл не запустить, только через import. В отношении приложения работать с компилированным кодом следует так:
Переносим код программы в отдельный файл, к примеру programm.py, компилируем его, потом подключаем его в default.py через импорт import programm.
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