gimp pydev.

2021-03-26 20:13:24

用于开发Python 3.8的GIMP 2.99.4的一些想法和工具。 GIMP 2.99.4是GIMP 3的最新不稳定预发行版。它猜测Python 3,然而它' S文件相当差,而且还有一件事总是恼火的是它使用了系统Python分布并在Topof上添加了它一些图书馆。此外,GIMP插件必须在GIMP内部运行...所以,让'沙克有一个适当的发展环境!

GIMP 2.99.4配备了FATHPAK分销的预编译二进制文件。所以,首先,如果你没有' t'假设你在debian-pasticlilux distro上:

FLATPAK是一种分销系统,如APT,但专注于最终用户的应用程序和隔离。像Docker一样,它将编译的应用程序隔离为自己的沙箱,但它实际上并不是虚拟化。 Let'安装GIMP 2.99.4:

对权限说“是”等。然后,您将能够从FlatPak运行GIMP:

因此,为了开始开发,我们必须了解哪个Python可执行文件正在使用gimp。这首先对我来说很棘手,但它实际上是非常好的结果。正如我所提到的,GIMP使用系统Python可执行文件,如果我们转到菜单条目过滤器>发展> Python-fu> Python Console将提示使用Python控制台:

我在这里找到这个python的主要问题是我在我的系统中安装了这个python,因为我使用python 3.9的i' m。虽然,我没有'任何用FlatPak的经验,Docker经验建议使用它的隔离环境提供的Python。所以,搜索FlatPak文档我发现了这种方法:

Python 3.8.6(默认值,2011年11月10日,15:00:00)在LinuxType&#34上的GCC 10.2.0];帮助&#34 ;,"版权&#34 ;," Credits&#34 ;或"许可证"有关更多信息。>>>

然后,如果我们使用此技巧 - 符号= Bash而不是Python可执行文件,我们将具有沙箱的外壳。所以,当你认为这是一个非常好消息。因为,我们终于有一个孤立的Python环境为gimp,一个棘手的一个,但我们拥有它!

由于它被认为是一个最小的环境,它缺乏开发Python代码的一些基本工具,让&#39安装了一些。首先,首先,让' s确保安装了pip:

现在,从插件在Python控制台内,我们可以验证我们可以导入ipython:

>>>进口ipython>>> ipython.embed()python 3.8.6(默认,11月10日,2011年11月10日,15:00:00)类型'版权所有''信用'或#39;许可证'有关更多信息,请为720.0 - 一种增强的交互式Python。类型'?'有关帮助。[1]:

但是,它将陷入困境。这是因为插件与sys.stdout和sys.sterr对象一起汇编,所以需要再演和#39;控制台'应用。因此,有可能改善Python控制台插件,成为此插件的The Typthon代码的IPython控制台插件,并适应它管理这两个对象的方式。

拥有iPython终端是Python的优秀,因为我们有一些额外的说明和访问shell,使用!但是,真正想要的是能够从GIMP外部运行代码,以便能够快速原型代码,特别是在Python中。可能的解决方案可以使用PyDev Server - 客户端方案。 Pydev最初开发用于在日食内使用,而且还有Pycharmhas自己的港口。其中Pycharm或IDE将作为调试服务器,该应用程序将启动该调试器的客户端。

所以,让'&#39做到这一点。在pycharm转到编辑配置...> +> Python Debug服务器,在那里您将看到运行此SpeC样的说明是Python项目。矿山是:

如果你在插件的Python控制台内尝试这两条线,你将以与ipython的相同问题结束,这两个解决方案依赖于sys.stdout和sys.stderr,但我们没有放弃。所以主要想法是执行这两条线。很容易,让'将黑客进入插件infiles并放置它们。然而,为了演示,让' s使用甚至更简单的插件,在新的位置滤波器和gt中有一个明亮的新插件模板专用语言语言。发展>山羊练习>播种一个山羊和一个python。哪个文件位于/app/lib/gimp/2.99/extensions/org.gimp.extension.goat-percises/goat-exercise -perp.py和从主机角度来看(和可编辑一)在〜/ .local / share / flatpak / app / app.gimp.gimp / lib / gimp / 2.99 / extensions / org.gimp.extension.goat-练习/山羊ercise-py3.py

此插件是一个简单的插件,在其中当前加载的gimp图像(因此您需要一个打开),是颜色反转的。我们将使用此插件挂钩我们的服务器。

所以要问现在的问题是我到底打电话的地方。显然,您希望它在插件启动时运行,有一条定义主题方法的行:

可以在那里添加set_trace()调用,但是我们不知道它是否实际运行,更糟糕,我们将冻结gimp!所以,我们需要最后的信仰和多处理,比信仰更加多重。所以,我们必须添加此导入:

在任何返回之前,应该被称为th.Terminate()以避免另一次冻结。它有效!我们正在为调试器提供一个孤立的Python终端,它正在GIMP进程内运行,因此它可以访问GIMP绑定。我的情况:

在repo中有一个已修改的插件版本,您可以将其用来将其复制到App文件夹中。但是,请注意,您需要使用actualual环境而不是沙箱,所以,假设您在repo' s根文件夹中:

要启用它,只需在GIMP插件中声明您的路径将您的Plug-Ins of the repo的文件夹。迈向在编辑和gt;偏好>文件夹>脚本。重启gimp并查看文件属于文件员和gt的重新项目;发展> Python> pydev客户端。另请注意,您需要在Python环境Gimp中安装插件依赖项正在使用,在我的情况下,在我的sandbox一个,检查这个自述文件的前面搜索。之前,启动插件您应该在Pycharm内启动PyDev服务器。

Fork Python控制台插件可以运行ipython。 只有刻破,暂时stesthe相同的功能。 创建一个最小的Python包,依赖于ipython和pydev和其他开发的东西,以安装能够使用新插件。 创建PIP包装器以显示PIP列表等有用信息,并从Gimpto Gimp Python环境中安装Pypi软件包。

2020-11-24 5:45
2020-11-22 12:46
2020-6-12 0:14