Уведомления

Группа в Telegram: @pythonsu

#1 Июль 4, 2009 19:13:35

nJLyTo
От:
Зарегистрирован: 2008-11-11
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

Существют ли какие-нибудь основные правила компиляции приложения? Возможно, что есть ограничения на размер компилируемого файла…

Для себя я выяснил, что скрипт должен быть:
1. В utf-8 без BOM
2. В Unix формате



Офлайн

#2 Июль 4, 2009 19:33:58

arok
От:
Зарегистрирован: 2008-01-15
Сообщения: 145
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

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



Офлайн

#3 Июль 4, 2009 20:01:35

nJLyTo
От:
Зарегистрирован: 2008-11-11
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

Хм, а мне казалось, что это не так уж просто.

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



Офлайн

#4 Июль 4, 2009 20:03:28

nJLyTo
От:
Зарегистрирован: 2008-11-11
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

arok
есть смысл большие скрипты, при этом время загрузки приложения значительно сокращается
именно поэтому я и хочу разобраться с этим



Офлайн

#5 Июль 4, 2009 23:30:37

arok
От:
Зарегистрирован: 2008-01-15
Сообщения: 145
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

так как на смарте версия питона 2.2.2, то я полагаю и модуль py_compile вы взяли от одноименной версии с бб, следовательно ошибок возникать не должно. Ошибки иногда встречаются если в скрипте присутствуют одинарные обратные слеши, проверьте свой код. Ну и что мешает вам компилировать на компе, установив версию питона 2.2.2, тем более там есть возможность компиляции с оптимизацией.



Офлайн

#6 Июль 5, 2009 13:50:24

nJLyTo
От:
Зарегистрирован: 2008-11-11
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

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")



Отредактировано (Июль 5, 2009 13:53:12)

Офлайн

#7 Июль 5, 2009 16:04:38

arok
От:
Зарегистрирован: 2008-01-15
Сообщения: 145
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

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



Офлайн

#8 Июль 5, 2009 16:35:04

nJLyTo
От:
Зарегистрирован: 2008-11-11
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

Установливаю Питон версии 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
При компиляции на телефоне аналогичная ситуация, разница лишь в том, что ошибку он мне показывает в первой строке.



Офлайн

#9 Июль 5, 2009 16:49:56

nJLyTo
От:
Зарегистрирован: 2008-11-11
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

Кажется, я смог разобраться, в чем была моя ошибка. ScriptShell просто не запускает pyc файлы, т.к. код он пытается выполнить через exec. Я сейчас попробовал запустить hello_world через другой скрипт:

import sys
sys.path += ['''e:\\Python''']
import hello_world
И он сработал! Но, при повторном запуске я получаю те же ошибки, что и до этого. Перед повторным запуском необходимо выйти из ScriptShell и запустить его снова.



Офлайн

#10 Июль 5, 2009 17:56:48

arok
От:
Зарегистрирован: 2008-01-15
Сообщения: 145
Репутация: +  0  -
Профиль   Отправить e-mail  

Компиляция приложений

Само собой разумеется, что через “Run script” компилированый файл не запустить, только через import. В отношении приложения работать с компилированным кодом следует так:
Переносим код программы в отдельный файл, к примеру programm.py, компилируем его, потом подключаем его в default.py через импорт import programm.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version