Форум сайта python.su
Существют ли какие-нибудь основные правила компиляции приложения? Возможно, что есть ограничения на размер компилируемого файла…
Для себя я выяснил, что скрипт должен быть:
1. В utf-8 без BOM
2. В Unix формате
Офлайн
utf не обязательно, но хорошим тоном считается писать все в утф. Перенос строки тоже не важно в каком формате. Правил тоже не как таковых не существует, компилировать есть смысл большие скрипты, при этом время загрузки приложения значительно сокращается, даже на глаз заметно. Причем компиляция с оптимизацией так же благотворительно сказывается на времени запуска приложения.
Офлайн
Хм, а мне казалось, что это не так уж просто.
Дело в том, что компилирую я на телефоне используя py_compile от “старшего брата”. Маленькие скрипты он легко компилируют, но вот с одним из моих файлов возникли проблемы - при запуске pyc файла появляется ошибка Invalid Syntax. При том, что py файл нормально работает.
Офлайн
arokименно поэтому я и хочу разобраться с этим
есть смысл большие скрипты, при этом время загрузки приложения значительно сокращается
Офлайн
так как на смарте версия питона 2.2.2, то я полагаю и модуль py_compile вы взяли от одноименной версии с бб, следовательно ошибок возникать не должно. Ошибки иногда встречаются если в скрипте присутствуют одинарные обратные слеши, проверьте свой код. Ну и что мешает вам компилировать на компе, установив версию питона 2.2.2, тем более там есть возможность компиляции с оптимизацией.
Офлайн
arokне совсем так, модуль я брал с версии 2.5, при этом, некоторые файлы мне все же удалось нормально компилировать
так как на смарте версия питона 2.2.2, то я полагаю и модуль py_compile вы взяли от одноименной версии с бб
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
import appuifw
appuifw.note(u"Hello world", "info")
Отредактировано (Июль 5, 2009 13:53:12)
Офлайн
Модуль лучше взять от версии 2.2, потому как в более поздних версиях присутствуют различия в байт-коде. Покажите как вы пытаетесь компилировать.
Офлайн
Установливаю Питон версии 2.2.2
В блокноте создаю файл hello_world.py такого содержания:
import appuifw
appuifw.note(u"Hello world", "info")
import compileall
compileall.compile_dir("c:\\project", force=1)
Listing c:\project ...
Compiling c:\project\hello_world.py ...
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
Офлайн
Кажется, я смог разобраться, в чем была моя ошибка. ScriptShell просто не запускает pyc файлы, т.к. код он пытается выполнить через exec. Я сейчас попробовал запустить hello_world через другой скрипт:
import sys
sys.path += ['''e:\\Python''']
import hello_world
Офлайн
Само собой разумеется, что через “Run script” компилированый файл не запустить, только через import. В отношении приложения работать с компилированным кодом следует так:
Переносим код программы в отдельный файл, к примеру programm.py, компилируем его, потом подключаем его в default.py через импорт import programm.
Офлайн