Написание плагинов gimp в python в windows - как отлаживать? где выход?
сильно отредактировано с некоторой новой информацией (и щедростью)
Я пытаюсь создать плагин в Python для gimp. (в Windows) эта страница 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.
моя текущая проблема заключается в том, что даже если плагин регистрируется и отображается в меню, когда есть какая-то ошибка, и она не ведет себя так, как ожидалось, я не знаю, с чего начать искать подсказки . (я пробовал нажимать во всех контекстах, без выбора, С без изображения. )
Я смог копировать и выполнять примеры плагинов изhttp://gimpbook.com/scripting/ и я получил, работая, но когда изменение я делаю перерывы что-то, я не знаю, что, и морфинг существующей программы строка за строкой утомительно .(gimp должен быть выключен и восстановлен каждый раз)
Итак, подводя итог -
1-могу ли я обновить плагин без перезапуска gimp ? (так, по крайней мере, мой медленный морфинг будет быстрее )
2-Могу ли я запускать плагины с python-fu ракушка. (в отличие от простого импорта, чтобы убедиться, что они анализируются.)
3 - Есть ли журнал ошибок, который я пропустил, или что-то в этом роде?
4-Есть ли способ запустить gimp в windows из оболочки, чтобы увидеть вывод ? (мне лучше под cygwin (или virtualbox.. ))?
5 - я еще не смотрел как подключить winpdb к существующему процессу. как я могу подключить его к процессу python, который работает внутри gimp?
спасибо
3 ответов
1-могу ли я обновить плагин без перезапуска gimp ? (так по крайней мере мой медленный морфинг будет быстрее)
вы должны перезапустить GIMP при добавлении скрипта или изменить register (). Нет необходимости перезапускать при изменении других частей скрипта-он запускается как отдельный процесс и будет перечитываться с диска каждый раз.
полезный источник: http://gimpbook.com/scripting/notes.html
2 - я может работать плагины из оболочки python-fu. (в отличие от просто импортируя их, чтобы убедиться, что они анализируются.)
Да, вы можете получить доступ к зарегистрированному плагину python-fu
консоль as:
>>> pdb.name_of_registerd_plug-in
и может назвать это так:
>>> pdb.name_of_registerd_plug-in(img, arg1, arg2, ...)
и в python-fu
диалоговое окно консоли, вы можете нажать на Browse ..
опция и найти зарегистрированный плагин,
а затем нажмите Apply
, чтобы импортировать его в , открытого 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
Обратите внимание, что открыть файл вместо w
сохранить файл журнала.
полезные источники:
как вывести информацию на консоль в Gimp на языке Python сценарий?
http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-2
4-Есть ли способ запустить gimp в windows из оболочки, чтобы увидеть вывод ? (мне лучше под cygwin (или virtualbox.. ))?
я получил некоторую ошибку для этого, но может попробовать еще раз ...
5-я еще не посмотрел, как подключить winpdb к существующему процесс. как я буду жить? подключение его к процессу python, который работает в gimp?
установить winpdb , а также wxPython, в (WINPDB GUI зависит от wxPython)
обратите внимание, что Gimp
имеет собственный интерпретатор python, и вы можете установить winpdb
к интерпретатору python по умолчанию или интерпретатору GIMP python.
при установке 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
в качестве пароля к нему, а затем вы можете увидеть свой плагин скрипт в этом списке, выберите его и запустите шаг отладки шаг.
полезный ресурс: установка 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
Как отметил в Как вывести информацию на консоль в Gimp скрипт Python?
добавить
import sys
sys.stderr = open( 'c:\temp\gimpstderr.txt', 'w')
sys.stdout = open( 'c:\temp\gimpstdout.txt', 'w')
в начале файла подключаемого модуля.
Я новичок в python, но я хотел бы дать крик, сначала winpdb, а затем к этому комментарию для интеграции winpdb в GIMP. Эта же процедура работает и для LibreOffice 4.
Если мне будет позволено немного выпустить пар; у меня есть умеренный опыт работы с Visual Basic, более или менее на самом высоком уровне, но я решил несколько лет назад попасть в OpenOffice, когда MicroSoft угрожала отказаться от VB для Mac. Я не хочу говорить, что VB в OpenOffice был обременительным, но отсутствие чего-либо похожего на IDE утомительно. Теперь, с winpdb, я никогда не буду оглядываться назад. С этого момента это питон, детка.
меры:
-- как было предложено Omid выше, я сначала получил winpdb из GIMP (относительно безболезненно).
-- Я скопировал rpdb2.py файл в C:\Program файлы\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 подробнее об этом).
(Не могу показать вам фотографию - размещение в качестве гостя)