如何使用PyCharm进行GIMP插件开发?

mar*_*n's 11 python gimp pycharm gimpfu

我需要为GIMP开发一个插件,并希望继续使用PyCharm进行Python编辑等.

仅供参考,我在Windows上.

在指示PyCharm使用GIMP附带的Python解释器之后:

项目口译员

我还添加了一个路径来gimpfu.py摆脱错误from gimpfu import *:

在此输入图像描述

这可以修复导入时的错误,即使设置为Excluded.

我尝试用这个目录设置Sources,Resources并Excluded仍然得到了常量,如错误RGBA-IMAGE,TRANSPARENT_FILL,NORMAL_MODE,等.

在此输入图像描述

关于如何扭曲PyCharm为GIMP插件开发做好事的任何想法?

没有真正运行PyCharm的任何代码,它实际上只是用作一个很好的代码编辑器,便于修改控件等.

Mik*_*mov 4

正如您所发现的,这些变量是.pyd文件的一部分(Python 的dll 文件)。PyCharm 无法获取此文件内容的签名。

对于 Python 内置函数(如abs、all、any等),PyCharm 有自己的.py文件,仅用于签名和文档。如果您单击其中一些函数并转到它的声明,您就可以看到它:

在此输入图像描述

PyCharm 将打开builtins.py其文件夹中的文件,其中包含以下内容:

def abs(*args, **kwargs): # real signature unknown
    """ Return the absolute value of the argument. """
    pass

def all(*args, **kwargs): # real signature unknown
    """
    Return True if bool(x) is True for all values x in the iterable.

    If the iterable is empty, return True.
    """
    pass

def any(*args, **kwargs): # real signature unknown
    """
    Return True if bool(x) is True for any x in the iterable.

    If the iterable is empty, return False.
    """
    pass
Run Code Online (Sandbox Code Playgroud)

如您所见,函数已定义并记录,但没有实现,因为它们的实现是用 C 创建的,并放置在二进制文件中的某个位置。

Pycharm 无法为每个库提供这样的包装器。.pyd通常创建文件的人会提供他们的.py包装器(例如,PyQt 模块:没有本机 python 实现,只有签名)。

看起来 Gimp 没有对某些变量进行这样的包装。我看到的唯一方法是手动创建某种自己的包装器。例如,gimpfu_signatures.py使用以下内容创建:

RGBA_IMAGE = 1
TRANSPARENT_FILL = 2
NORMAL_MODE = 3
Run Code Online (Sandbox Code Playgroud)

并在创建插件时导入它:

from gimpfu import *
from gimpfu_signatures import *  # comment on release
Run Code Online (Sandbox Code Playgroud)

不优雅,但总比没有好。

...

gimpfu.py关于的路径还有一个注释。如果我理解正确的话,您刚刚将此路径添加到项目中。它可能有效,但正确的方法是将其添加到项目的 PYTHONPATH (在项目首选项中)。请参阅此链接以获取详细手册。