Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用PyCharm进行GIMP插件开发?_Python_Pycharm_Gimp_Gimpfu - Fatal编程技术网

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

Python 如何使用PyCharm进行GIMP插件开发?,python,pycharm,gimp,gimpfu,Python,Pycharm,Gimp,Gimpfu,我需要为GIMP开发一个插件,并希望继续使用PyCharm进行Python编辑等 仅供参考,我在Windows上 指示PyCharm使用GIMP附带的Python解释器后: 我还向gimpfu.py添加了一个路径,以消除gimpfu import*中的错误: 这修复了导入错误,即使设置为排除 我尝试将此目录设置为Sources,Resources和Excluded,但仍然会得到常量错误,例如RGBA-IMAGE,透明填充,正常模式,等等 有没有关于如何扭曲PyCharm,使其在GIMP插件

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

仅供参考,我在Windows上

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

我还向
gimpfu.py
添加了一个路径,以消除gimpfu import*中
的错误:

这修复了导入错误,即使设置为
排除

我尝试将此目录设置为
Sources
Resources
Excluded
,但仍然会得到常量错误,例如
RGBA-IMAGE
透明填充
正常模式
,等等

有没有关于如何扭曲PyCharm,使其在GIMP插件开发中发挥作用的想法


不是真的从PyCharm运行任何代码,它只是用作一个很好的代码编辑器,方便修改控制等等。

因为您发现这些变量是
.pyd
文件的一部分(对于Python)。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
RGBA_IMAGE = 1
TRANSPARENT_FILL = 2
NORMAL_MODE = 3
正如您所看到的,函数是定义和文档化的,但没有实现,因为它们的实现是用C创建的,并放在二进制文件中的某个地方

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

看起来Gimp对某些变量没有这样的包装器。我看到的唯一方法是手动创建某种自己的包装器。例如,使用以下内容创建
gimpfu_signatures.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
RGBA_IMAGE = 1
TRANSPARENT_FILL = 2
NORMAL_MODE = 3
并在创建插件时导入它:

from gimpfu import *
from gimpfu_signatures import *  # comment on release
不优雅,但总比什么都不好


关于
gimpfu.py
路径的另一个注意事项。如果我理解正确,您刚刚将此路径添加到project。它可能会工作,但正确的方法是将其添加到项目的PYTHONPATH(在项目首选项中)。有关详细手册,请参阅。

您收到的是实际错误还是警告?可能是非常重要的线索:错误说明了什么?如果您将鼠标悬停在红色卷曲线上,PyCharm会怎么说?您是否尝试过显式导入这些内容?我会尝试
导入gimpfu
,然后访问那些常量,如
gimpfu.RGBA_IMAGE
。抱歉,忙了一周。。。代码在GIMP中运行良好。没有问题。这确实是一个关于设置PyCharm的问题,以便它能够解析这些符号。我搜索了整个GIMP安装树(C:\Program Files\GIMP 2),没有找到上面提到的符号名称。这可能意味着它们是已编译的C库的一部分。不确定是否有可能向PyCharm提供它需要了解的关于这些符号的信息,而不使用不必要的创可贴污染代码。同样,代码是正确的,我的插件在GIMP下运行得非常好。谢谢。明天我会详细讨论一下。我担心实现这一点的唯一方法可能是不受欢迎的人工导入。如果这是GIMP应该提供的东西,并且有人会贡献它(最好是以在构建过程中更新的方式),那么我们肯定会接受这个加入GIMP。给出的答案并不完全正确,但我还是会奖励赏金的。@MichaelSchumacher,也许你和JetBrains的人(PyCharm的作者)之间的联系会促进这一点?我无法为GIMP做出贡献(每天工作16小时),但JetBrains可能有兴趣让PyCharm无缝地用于插件开发。Gerasimov描述的
.py
“包装器”文件是否等同于
.h
文件?也就是说,它们是函数和常量的存根定义?那么也许,@MichaelSchumacher,这些并不难产生。我愿意看看这个,看看它是否可行。