Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

13 Декабрь 2017, 23:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Лог ошибок Python в Ubuntu  (Прочитано 388 раз)
0 Пользователей и 1 Гость смотрят эту тему.
karpo518
Пользователь
**
Offline Offline

Сообщений: 51


« Стартовое сообщение: 26 Июль 2017, 19:22 »

Пытаюсь устранить ошибку в установленном расширении. Сама ошибка, предположительно, связана с неправильно упаковкой расширения, а не с самим кодом. Ошибка вылетает в системном скрипте /usr/lib/libreoffice/program/pythonscript.py в функции:
Код:
   def getStorageUrlFromPersistentUrl( self, url):
        ret = url
        if self.rootUrl:
            pos = len(self.rootUrl)+1
            packageName = url[pos:url.find("/",pos+1)]
            package = self.mapPackageName2Path[ packageName ]
            ret = url[0:pos]+ package.transientPathElement + "/" + url[pos:len(url)]
        log.debug( "getStorageUrlFromPersistentUrl " + url + " -> "+ ret)
        return ret

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

Пытался записать значение packageName в файл или вывести его в логе через log.debug(packageName). Но записать в файл не получается, скорее всего потому что у скрипта нет прав.

А лог лежит непонятно где, если вообще ведется. В скрипте pythonloader.py выставлено значение DEBUG = 1, но единственный найденный файл лога /home/username/.config/libreoffice/4/user/extentions/share/log.txt имеет какие-то записи, связанные работой расширения, но мои кастомные выводы не содержит.
Выглядит вот так:
Код:
###### Progress log entry 2017-07-19 09:00:53 ######
###### Progress log entry 2017-07-26 13:38:12 ######
###### Progress log entry 2017-07-26 13:39:04 ######
###### Progress log entry 2017-07-26 13:39:44 ######
###### Progress log entry 2017-07-26 13:40:45 ######
###### Progress log entry 2017-07-26 13:44:28 ######
###### Progress log entry 2017-07-26 13:52:34 ######
###### Progress log entry 2017-07-26 13:53:18 ######
###### Progress log entry 2017-07-26 13:53:51 ######
###### Progress log entry 2017-07-26 13:55:02 ######
###### Progress log entry 2017-07-26 14:18:08 ######
###### Progress log entry 2017-07-26 14:19:47 ######
###### Progress log entry 2017-07-26 14:21:45 ######
###### Progress log entry 2017-07-26 15:04:27 ######
###### Progress log entry 2017-07-26 15:33:47 ######
###### Progress log entry 2017-07-26 18:50:24 ######
###### Progress log entry 2017-07-26 18:54:47 ######
###### Progress log entry 2017-07-26 18:56:04 ######
###### Progress log entry 2017-07-26 19:08:17 ######



Как можно продебажить этот скрипт, чтобы понять, что ему не нравится?


* f87aaf08d3.jpg (91.56 Кб, 508x309 - просмотрено 10 раз.)
« Последнее редактирование: 26 Июль 2017, 19:25 от karpo518 » Записан

Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2
karpo518
Пользователь
**
Offline Offline

Сообщений: 51


« Ответ #1: 8 Август 2017, 11:29 »

Расковырял скрипт запуска макросов на Python. Выяснилось, что для правильной компиляции, нужно сложить все скрипты в отдельную папку и подключить её как библиотеку:
Код:
beginAnnexes
  useLibrary("Python", "scripts/")
endAnnexes

В противном случае программа не видит скриптов. Вообще конечно компиляция Python-расширения - то ещё приключение для новичка)
Записан

Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2
mikekaganski
Ветеран
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 712


« Ответ #2: 8 Август 2017, 11:34 »

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

С уважением,
Михаил Каганский
karpo518
Пользователь
**
Offline Offline

Сообщений: 51


« Ответ #3: 8 Август 2017, 12:48 »

Здравствуйте. Написание макросов не является моей основной деятельностью и никогда не станет ей. Макрос потребовался в качестве дополнительного инструмента для организации, в которой я работаю.  Решил запаковать его для удобного распространения и обновления. Написал небольшую инструкцию по компиляции простого расширения на Python. Используйте её, если будет уместно.

Для компиляции необходимо проделать следующие действия:

1. Скачиваем последнюю версию Extension Compiler на странице https://wiki.openoffice.org/wiki/Extensions_Packager
По сути это шаблон нового документа со встроенными макросами на Basic

2. Запускаем файл двойным щелчком мыши. OpenOffice предложит сохранить новый документ. Если вместо этого выскочило сообщение о том, что макросы заблокированы, потребуется разрешить их выполнение в Сервис->Параметры->Безопасность->Безопасность максросов указываем папку, в которой разрешаем выполнение макросов и запускаем файл из неё.

3. Сохраняем документ в папке с файлами будущего расширения использую имя приложения.

4. Запускаем сохраненный файл и отрываем макросы документа в Сервис->Максросы->Управление макросами-> LibreOffice Basic.. раскрываем список совпадающий с именем файлов и вложенный в него список Standard. Выбираем макрос Module1, нажимаем "Правка". Этот макрос должен содержать ваши инструкции для компиляции на языке Basic. Заменяем код на свой и сохраняем.

5. Запускаем компиляцию. Сам документ есть ничто иное как документация к Extension Compiler на английском языке. Помимо прочего она содержит в пункте 2.3 3 формы запуска компиляции. Выбираем форму по потребностям. У меня не получилось указать необходимую минимальную версию офисного пакета в форме компиляции под Openoffice и LibreOffice. При компиляции вылетала ошибка о некорректно указанной минимальной версии. Поэтому я использовал форму LibreOffice only. Указал минимальную версию 4.0(потому что нужна кнопка в панели расширений) и нажал кнопку Compile to LibreOffice only. Форма также может не сработать из-за некорректных настроек безопасностию При необходимости исправьте по аналогии с пунктом 2.

После нажатия кнопки мой документ перелистнулся в самое начало. Если у вас случилось то же самое, отмотайте его назад к форме и посмотрите на информацию в блоке "Compilation results". В случае успеха в блоке будет указано, какие файлы созданы в папке расширения. Иначе будет указана ошибка. Если причина ошибки неочевидна, убирайте из макроса компиляции инструкции, которые подозреваете в ошибке и пробуйте скомпилировать расширение повторно, пока компиляция не завершится без ошибок.

Ниже указал свой код с инструкциями для компиляции.
Код:
REM  *****  BASIC  *****
Option Explicit
Sub myExtension

'Блок описания: полное название расширения в рекомендованном документацией формате:  org.openoffice.autor_name.extention_name
beginDescription("org.openoffice.ivanov42.MyFirstExtention", "1.0.0")
   
    'Полное имя автора и ссылка на страницу с контактной информацией
    setPublisherName("en", "Ivan Ivanov", "http://ivanov.ru/")
   
    'Информация для автоматического обновления: путь, по которому будут храниться все версии приложения и информация для обновления
    'После компиляции получаем 2 файла: .oxt(само расширение) и .xml(информация для автоматического обновления). Оба файла должны быть доступны по указанному пути.
    'При выпуске новой версии, заливаем на сервер новый файл .oxt и заменяем файл .xml
    beginUpdateInformation("direct", "direct")
  setUpdateSource("http://ivanov.ru/upload/MyFirstExtention/", "http://ivanov.ru/upload/MyFirstExtention/")
    endUpdateInformation
endDescription

'Блок подключения дополнительных библиотек. Я не использовал дополнительных библиотек, но чтобы расширение видело мой код,
'пришлось закинуть единственный файл с кодом в отдельную папку и подключить как внешнюю библиотеку
beginAnnexes
  useLibrary("Python", "scripts/")
endAnnexes


'Блок элементов управления. Моё расширение имеет однуединственную функцию, которая должна запускаться с кнопки на панели инструментов в OpenOffice Writer
beginAddonUI
  beginOfficeToolbar               
    beginButton
        'Указал, что кнопка требуется только для текстовых документов
        beginTitles("Writer")
          setTitle("Format", "en")
        endTitles
        'Указал имя файла и название функции, которую нужно запустить по кнопке
        setURL("Python", "scripts/common.py", "Main")
        'В папку images положил 4 изображения: image518_16.bmp, image518_16h.bmp, image518_26.bmp, image518_26h.bmp размером 16x16px и 26x26px, соответственно
        'Согласно документации достаточно одного изображения _16 в формате bmp или png
        setImage("images/image518")
    endButton
  endOfficeToolbar
endAddonUI

End Sub

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

Linux Mint 18 (64 bit),  LibreOffice 5.1.6.2
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!