Подтвердить что ты не робот

Написание плагинов gimp в python на windows - как отлаживать? где выход?

EDITED HEAVILY с некоторой новой информацией (и щедростью)

Я пытаюсь создать подключаемый модуль в python для gimp. (по окнам) эта страница http://gimpbook.com/scripting/notes.html предлагает запустить ее из оболочки или просмотреть ошибки ~/.xsession

не работает. Я могу запустить его из оболочки cmd, так как

gimp-2.8.exe -c --verbose ## (как предложено http://gimpchat.com/viewtopic.php?f=9&t=751)

это приводит к выводу из "pdb.gimp_message (...)" перехода к терминалу.

НО!!! это работает только тогда, когда все работает как ожидалось, я не получаю никакого вывода при сбоях.

Я пробовал печатные заявления, они никуда не уходят.

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


в некоторых местах я видел рекомендации для запуска его из консоли python-fu.

Мне это ни к чему. Мне нужно прокомментировать импорт gimpfu, поскольку он вызывает ошибки, и я не получаю работу gtk.


Моя текущая проблема заключается в том, что даже если плагин регистрируется и отображается в меню, когда есть некоторая ошибка, и он не ведет себя так, как ожидалось, я не знаю, с чего начать искать подсказки. (я попытался щелкнуть во всех контекстах, w - без выбора, без изображения).

Я смог скопировать и выполнить пример плагинов из http://gimpbook.com/scripting/ и я получил, работая, но когда изменение, которое я делаю, что-то ломает, я не знаю, что и морфинг существующей программы по строчке утомительно. (gimp нужно отключать и восстанавливать каждый раз)


поэтому подытожим -

1- можно обновить плагин без перезагрузки gimp? (так что хотя бы мой медленный морф будет быстрее)

2- можно запускать плагины из оболочки python-fu. (а не просто импортировать их, чтобы убедиться, что они анализируются.)

3 - есть ли ошибка, которую я не вижу, или что-то в этом роде?

4- есть ли способ запустить gimp на окна из оболочки, чтобы увидеть результат? (мне лучше в cygwin (или virtualbox..))?

5- я еще не посмотрел, как подключить winpdb к существующему процессу. как я могу связать его с процессом python, который работает внутри gimp?

спасибо

4b9b3361

Ответ 1

1- можно обновить плагин без перезагрузки gimp? (так, по крайней мере, мой slow-morph будет быстрее)

Вы должны перезапустить GIMP при добавлении script или изменить регистр(). Не нужно перезапускать при смене других частей script - он запускается как отдельный процесс и будет перечитываться с диска каждый раз.

полезный источник:   http://gimpbook.com/scripting/notes.html

2- можно запускать плагины из оболочки python-fu. (в отличие от просто импортируя их, чтобы убедиться, что они анализируют.)

Да, вы можете получить доступ к зарегистрированному подключаемому модулю в консоли python-fu как:

>>> pdb.name_of_registerd_plug-in

И можно вызвать его так:

>>> pdb.name_of_registerd_plug-in(img, arg1, arg2, ...)

Также в диалоговом окне python-fu вы можете нажать кнопку Browse .. и найти зарегистрированный плагин, а затем нажмите Apply, чтобы импортировать его в консоль python-fu.

полезный источник:   http://registry.gimp.org/node/28434

3 - есть ли ошибка-журнал, который я потерял, или что-то в этом роде?

Для регистрации вы можете определить такую ​​функцию:

def gimp_log(text):
    pdb.gimp_message(text)

И используйте его в своем коде, когда захотите.

Чтобы просмотреть журнал этого в программе gimp, откройте Error Console из Dockable Dialogs в Windows, иначе окно сообщений будет всплывать при каждом создании журнала.

Также вы можете перенаправить stdin и stdout в файл:

import sys
sys.stderr = open('er.txt', 'a')
sys.stdout = open('log.txt', 'a')

Когда вы это сделаете, все exceptions перейдут к err.txt, и все распечатки будут отправлены в log.txt Обратите внимание, что открыть файл с опцией a вместо w для сохранения файла журнала.

полезные источники:

Как вывести информацию на консоль в Python Gimp script?

http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-2

4- есть ли способ запустить gimp на окна из оболочки, чтобы увидеть результат? (мне лучше в cygwin (или virtualbox..))?

Я получил некоторую ошибку для этого, но могу попробовать еще раз...

5- я еще не посмотрел, как подключить winpdb к существующему обработать. как я могу связать его с процессом python, который работает внутри gimp?

Сначала установите winpdb, а также wxPython (графический интерфейс Winpdb зависит от wxPython)

Обратите внимание, что gimp имеет собственный интерпретатор python, и вы можете установить winpdb на ваш интерпретатор python по умолчанию или на переводчик pimp. gimp.

Если вы устанавливаете winpdb в ваш интерпретатор python по умолчанию, вам необходимо скопировать rpdb2.py установленный файл в ..\Lib\site-packages пути интерпретатора gimp python.

После этого вы сможете импортировать модуль pdb2 из консоли python-fu консоли gimp:

GIMP 2.8.10 Python Console
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
>>> import rpdb2
>>>

Теперь в вашем подключаемом коде, например, в вашей основной функции добавьте следующий код:

import rpdb2 # may be included out side of function.
rpdb2.start_embedded_debugger("pass") # a password that will asked by winpdb

Затем перейдите в gimp и запустите свой плагин python, когда вы запустите свой плагин, он запустится, а затем дождитесь, когда достигнет кода выше.

Теперь, чтобы открыть Winpdb GUI, перейдите к ..\PythonXX\Scripts и запустите winpdb_.pyw.

(Обратите внимание, что при использовании Winpdb для удаленной отладки убедитесь, что любой брандмауэр на пути имеет TCP-порт 51000. Обратите внимание, что если порт 51000, Winpdb будет искать альтернативный порт между 51000 и 51023.)

Затем в Winpdb GUI из File выберите attach и дайте pass в качестве пароля к нему, а затем вы увидите свой плагин script в этом списке, выберите его и запустите шаг отладки шаг за шагом.

debug python gimp plugin with Winpdb

полезный ресурс:   Установка PyGIMP в Windows

Полезные источники:

http://wiki.gimp.org/index.php/Hacking:Plugins

http://www.gimp.org/docs/python/index.html

http://wiki.elvanor.net/index.php/GIMP_Scripting

http://www.exp-media.com/gimp-python-tutorial

http://coderazzi.net/python/gimp/pythonfu.html

http://www.ibm.com/developerworks/opensource/library/os-autogimp/os-autogimp-pdf.pdf

Ответ 3

Я новичок в python, но я бы хотел выкрикнуть, сначала на winpdb, а затем на этот комментарий для интеграции winpdb в GIMP. Эта же процедура работает и для LibreOffice 4.

Если мне может быть позволено выпустить немного; У меня довольно небольшой опыт работы с Visual Basic, более или менее на самом высоком уровне, но я решил несколько лет назад войти в OpenOffice, когда MicroSoft угрожала отказаться от VB для Mac. Я не хочу говорить, что VB в OpenOffice был обременительным, но отсутствие чего-либо похожего на IDE утомительно. Теперь, с winpdb, я никогда не оглядываюсь назад. Это питон отсюда, ребенок.

Сделанные шаги:

- Как было предложено Омидом выше, я впервые получил winpdb, закончившийся GIMP (относительно безболезненный).

- Я скопировал файл rpdb2.py в C:\Program Files\LibreOffice 4\program\python-core-3.3.3\lib\site-packages\rpdb2.py. (Win 7, LibreOffice 4.4.03)

- Я отредактировал файл HelloWorld.py в каталоге C:\Program Files\LibreOffice 4\share\Scripts\python (сохранен в WinPDb_HelloWorld.py в том же каталоге).

# HelloWorld python script for the scripting framework
# This file is part of the LibreOffice project.
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. blah, blah, blah ...

import rpdb2
#rpdb2.start_embedded_debugger("Your Password Here")    # << DON'T start debugger here.
    # It only gets you lost in the LO python wrapper when debugging.

def HelloWorldPython( ):
    """Prints the string 'Hello World(in Python)' into the current document"""

    # start debugger INSIDE function, where it will be called from LO Macros -- Duh!!
    rpdb2.start_embedded_debugger("YourPasswordHere") 

    #get the doc from the scripting context which is made available to all scripts
    desktop = XSCRIPTCONTEXT.getDesktop() 
    #... etc., see HelloWorld.py

WinPDb_HelloWorld появляется под макросами LibreOffice в Макроселекторе (подробнее см. https://wiki.openoffice.org/wiki/Python_as_a_macro_language).

(не может показать вам изображение - размещение в качестве гостя)