GIMP Python and websockets



我已经广泛使用了GIMP 2和WebSockets(在java和js中),但我对Python还不熟悉。

我想在我的gimp插件中使用websocket客户端,所以我得到了Python 2.7.14(它与pip一起提供),我运行了这个websocket实现中的安装说明:https://github.com/websocket-client/websocket-client

我看到它依赖于"six"one_answers"backports.ssl_match_hostname",所以我使用pip安装了这两个,six已经安装,并且backports更新了。

我的插件如下:

#!/usr/bin/env python
from gimpfu import *
import websocket
def python_pytest(img, layer) :
# Actual plug-in code will go here
ws = websocket.WebSocket()
ws.connect("ws://example.com/websocket", http_proxy_host="proxy_host_name", http_proxy_port=3128)
return
register(
"python_fu_pytest", #Name so other scripts can find us
"Collaborative Editing", #Short Desc
"WebSocket based collaborative editing", #Long description
"Jonathan Crowder", #Author
"Open Source", #Copyright Holder
"2017", #Copyright Date
"NetCanvas", #Plugin name in menus
"*", #Image types we can handle
[], #Params shown to user
[], #Return values
python_pytest, #Main function
menu="<Image>/NetCanvas") #Where to show in menus
main()

如果我去掉了与websocket相关的代码,它似乎工作得很好,但我在上面的代码中遇到了这个错误:

(gimp-2.8.exe:5508): LibGimpBase-WARNING **: gimp-2.8.exe: gimp_wire_read(): error
Querying plug-in: 'C:UsersJonathan.gimp-2.8plug-insnetcanvas.py'
(gimp-2.8.exe:5508): LibGimpBase-WARNING **: gimp-2.8.exe: gimp_wire_read(): error

我不是调试的朝圣者,但没有足够的信息让我找出问题所在。我使用命令得到了输出:

gimp-2.8 --verbose --console-messages

我做错了什么?gimp-python插件不能读取我安装的libs吗?有没有办法从gimp中获取更多信息?我想——verbose实际上就是……嗯,verbose。

编辑-需要明确的是,这是我的整个日志,以防你认为我没有包含有趣的调试信息。:

INIT: gimp_load_config
Parsing 'C:UsersJonathan.gimp-2.8unitrc'
Parsing 'C:Program FilesGIMP 2etcgimp2.0gimprc'
Parsing 'C:UsersJonathan.gimp-2.8gimprc'
gimp_composite: verbose=no
Processor instruction sets: +mmx +sse +sse2 -3dnow -altivec -vis
Adding theme 'Default' (C:Program FilesGIMP 2sharegimp2.0themesDefault)
Adding theme 'Small' (C:Program FilesGIMP 2sharegimp2.0themesSmall)
Writing 'C:UsersJonathan.gimp-2.8themerc'
Trying splash 'C:UsersJonathan.gimp-2.8gimp-splash.png' ... failed
Trying splash 'C:Program FilesGIMP 2sharegimp2.0imagesgimp-splash.png' ..
. OK
INIT: gimp_initialize
INIT: gimp_real_initialize
INIT: gui_initialize_after_callback
INIT: gimp_restore
Parsing 'C:UsersJonathan.gimp-2.8parasiterc'
Loading 'brush factory' data
Loading 'dynamics factory' data
Loading 'pattern factory' data
Loading 'palette factory' data
Loading 'gradient factory' data
Loading fonts
Loading 'tool preset factory' data
Parsing 'C:UsersJonathan.gimp-2.8templaterc'
Parsing 'C:UsersJonathan.gimp-2.8modulerc'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibcolor-selector-c
myk.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibcolor-selector
-cmyk.dll'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibcolor-selector-w
ater.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibcolor-selector
-water.dll'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibcolor-selector-w
heel.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibcolor-selector
-wheel.dll'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibcontroller-dx-di
nput.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibcontroller-dx-
dinput.dll'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter-c
olor-blind.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter
-color-blind.dll'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter-g
amma.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter
-gamma.dll'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter-h
igh-contrast.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter
-high-contrast.dll'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter-l
cms.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter
-lcms.dll'
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter-p
roof.dll'
Unloading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter
-proof.dll'
INIT: gui_restore_callback
clipboard: writable pixbuf format: image/png
clipboard: writable pixbuf format: image/bmp
clipboard: writable pixbuf format: image/x-bmp
clipboard: writable pixbuf format: image/x-MS-bmp
clipboard: writable pixbuf format: image/x-icon
clipboard: writable pixbuf format: image/x-ico
clipboard: writable pixbuf format: image/x-win-bitmap
clipboard: writable pixbuf format: image/tiff
clipboard: writable pixbuf format: image/jpeg
Parsing 'C:UsersJonathan.gimp-2.8sessionrc'
Parsing 'C:UsersJonathan.gimp-2.8dockrc'
Parsing 'C:UsersJonathan.gimp-2.8toolrc'
Parsing 'C:UsersJonathan.gimp-2.8contextrc'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-rect-select-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-ellipse-select-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-free-select-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-fuzzy-select-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-by-color-select-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-iscissors-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-foreground-select-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-vector-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-color-picker-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-zoom-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-measure-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-move-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-align-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-crop-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-rotate-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-scale-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-shear-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-perspective-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-flip-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-cage-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-text-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-bucket-fill-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-blend-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-pencil-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-paintbrush-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-eraser-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-airbrush-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-ink-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-clone-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-heal-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-perspective-clone-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-convolve-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-smudge-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-dodge-burn-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-desaturate-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-color-balance-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-hue-saturation-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-colorize-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-brightness-contrast-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-threshold-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-levels-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-curves-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-posterize-tool'
Parsing 'C:UsersJonathan.gimp-2.8tool-optionsgimp-gegl-tool'
INIT: gimp_real_restore
Parsing 'C:UsersJonathan.gimp-2.8pluginrc'
Querying plug-in: 'C:Program FilesGIMP 2libgimp2.0plug-inspyconsole.py'
(gimp-2.8.exe:5508): LibGimpBase-WARNING **: gimp-2.8.exe: gimp_wire_read(): err
or
Querying plug-in: 'C:UsersJonathan.gimp-2.8plug-insnetcanvas.py'
(gimp-2.8.exe:5508): LibGimpBase-WARNING **: gimp-2.8.exe: gimp_wire_read(): err
or
Writing 'C:UsersJonathan.gimp-2.8pluginrc'
Starting extension: 'extension-script-fu'
INIT: gui_restore_after_callback
Parsing 'C:UsersJonathan.gimp-2.8menurc'
Parsing 'C:UsersJonathan.gimp-2.8devicerc'
Parsing 'C:UsersJonathan.gimp-2.8controllerrc'
Parsing 'C:UsersJonathan.gimp-2.8colorrc'
loading menu 'C:Program FilesGIMP 2sharegimp2.0menusimage-menu.xml' for /
image-menubar
Loading module 'C:Program FilesGIMP 2libgimp2.0moduleslibdisplay-filter-l
cms.dll'
EXIT: gimp_exit
EXIT: gui_exit_callback
Writing 'C:UsersJonathan.gimp-2.8sessionrc'
Writing 'C:UsersJonathan.gimp-2.8dockrc'
Writing 'C:UsersJonathan.gimp-2.8colorrc'
Writing 'C:UsersJonathan.gimp-2.8menurc'
Writing 'C:UsersJonathan.gimp-2.8controllerrc'
Writing 'C:UsersJonathan.gimp-2.8toolrc'
EXIT: gimp_real_exit
Writing 'C:UsersJonathan.gimp-2.8templaterc'
Writing 'C:UsersJonathan.gimp-2.8parasiterc'
Writing 'C:UsersJonathan.gimp-2.8unitrc'
EXIT: gui_exit_after_callback
EXIT: app_exit_after_callback
(Type any character to close this window)

在Windows上,Gimp自带Python解释器,因此您必须:

  • 为该解释器实例安装软件包(最简单的解决方案IMHO)
  • 让Gimp使用其他解释器(向其中添加gimpfu模块,可能还有其他…)(请参阅Gimp安装目录中的lib/gimp/2.0/interpreters/pygimp.interp)

一些提示可以在此处调试Gimp python脚本。

最新更新