2013-09-24 3 views
0

Я пытаюсь написать скрипт gimp с помощью pythonfu. Однако, когда я пытаюсь запустить скрипт локально, я получаю сообщение об ошибкеpython не может импортировать gimpfu

`--> ./vvv.py 
Traceback (most recent call last): 
    File "./vvv.py", line 5, in <module> 
    from gimpfu import * 
ImportError: No module named gimpfu 

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

+0

@ hus787 благодарит. Это плагин, который я пытаюсь написать сам. Я хочу знать, как сказать, почему плагин не загружается. – Yotam

ответ

3

в зависимости от вашей операционной системы, вы должны искать директории GIMP плагина, что-то вроде:

GIMP 2\lib\gimp\2.0\plug-ins 

и скопировать скрипт там. Конечно, вы должны добавить регистрации вещей что-то вроде этого:

register(
    "python-fu-draw",        #<- this is plugin name 
    N_("brief"),          #<- description 
    "Long",           #<- description 
    "name surname",         #<- author 
    "@Copyright 2013",        #<- copyright info 
    "2013/10/29",         #<- creation date 
    N_("_Draw..."),         #<- label shown in gimp's menu 
    "", #<- kind of image requested from your script (INDEX,RGB,...and so on) 
    [            #<- input parameters array 
     (PF_FILE, "ifile", N_("Color input file"), 'default.txt'), 
], 
[],             #<- output parameters array (usually empty) 
draw,            #<- main method to call 
menu="<Image>/Filters/",        #<- Where add your plugin 
domain=("gimp20-python", gimp.locale_directory) 
) 

main()            #<- don't forget this 

После того, как вы скопировали скрипт в нужный каталог с правыми регистрационными вещами вы можете запустить GIMP и запустить скрипт, выбрав его в раскрывающемся меню, выбранном в регистрации материале , Вам не нужно запускать его с консоли python. Поэтому те, кто не будет работать:

python myscript.py 
./myscript.py 
>>> myscript 

Для отладки сценария в интерактивном режиме откройте консоль питона-фу из канители:

Filters->Python-fu->Console 

Посмотрите на this вебе-сайте. Главным образом слайды очень полезны.

Хотя, если вы хотите запустить скрипт в пакетном режиме, пожалуйста, посмотрите на this

1

Частая причина Python плагинов молча не появляющийся в GIMP является синтаксических ошибок. Быстрый, скрипты способа проверить:

python -m py_compile vvv.py

На платформах Windows, успешная компиляция будет возвращать %errorlevel% 0.

0

Перефразируя оригинальный пост: Я написал плагин Python GIMP и установил его в правильное место, но оно не отображается в меню фильтра GIMP, поэтому как его отладить?

Наиболее распространенной причиной является то, что вы не дали разрешения на выполнение в файле источника плагина (.py) при его скопировании в нужное место. (Это известная причуда GIMP, что она не будет читать источник плагина Python, который не имеет разрешения на выполнение.)

Еще один вопрос: мой плагин появляется в меню фильтра GIMP, но он молча работает как я и ожидаю, как его отладить?

Вы можете запустить GIMP в консоли (терминале), чтобы любая отладочная печать из вашего плагина переходила на консоль или использовала Filters> Python-Fu> Console, как предложено в другом ответе.

Если ваш плагин аварий, то GIMP GUI покажет вам отслеживающий, или оно появится в консоли вы начали GIMP в

Другой вопрос может быть:. Я могу отлаживать скрипты Python, которые импортируют модули PyGimp? (чаще всего gimpfu, который является модулем omnibus, который импортирует другие модули PyGimp.) Например, у вас есть модуль Python для использования плагином GIMP Python, и вы хотите протестировать его части (скажем, doctest it) без запуска GIMP ,

Возможно, вы можете установить PyGimp (в каталоги Python) по стандарту: скачать PyGimp, .configure, make, make install. (Я не пробовал этого и не мог легко найти загружаемый исходный пакет для PyGimp.) Обычно модули PyGimp устанавливаются с помощью GIMP и не устанавливаются в каталоги Python (GIMP просто futzes с PYTHON_PATH, когда он запускает интерпретатор Python, поэтому что модули PyGimp найдены?) Или в вашей среде (оболочки или вашей IDE) вы можете изменить PYTHON_PATH так, чтобы она включала в себя подкаталог вашей установки GIMP, в которой содержатся модули PyGimp.

0

Ожидаемое поведение. Плагин Python от GIMP имеет необычный дизайн: Не вызывайте скрипт Python напрямую, а скорее звоните GIMP, который вызывает ваш скрипт по очереди (это верно как для графического интерфейса, так и для сценариев командной строки).


  1. Убедитесь, что вы зарегистрировать центральную функцию в конце сценария:

    from gimpfu import * 
    
    # ... your script ... 
    
    args = [(PF_STRING, 'file', 'GlobPattern', '*.*')] # adjust to your function 
    register('my-script', '', '', '', '', '', '', '', args, [], my_function) 
    main() # GIMP's main(), do not write your own! 
    
  2. Марк ваш скрипт исполняемым

    chmod +x my_script.py 
    
  3. Копирование, перемещение или HardLink ваш сценарий, чтобы он был в каталоге плагина GIMP:

    ln my_script.py ~/.gimp-2.8/plug-ins/my_script.py 
    
  4. Теперь Вы можете позвонить в GIMP, который будет вызывать скрипт (предупреждение: GIMP немного медленно)

    gimp -i -b '(my-script RUN-NONINTERACTIVE "example.png")' -b '(gimp-quit 0)' 
    

    Как уже говорилось выше, не делайте этого:

    python my_script.py # bad! 
    

Скобки из-за того, что это Схема вызов функции. По этой же причине вы должны заменить все дефисы в списке доступных функций символами подчеркивания (их можно найти в графическом интерфейсе GIMP под номером Help > Procedure Browser).

Если вам нужен сценарий примера, проверьте the documentation или my script.

Смежные вопросы