Python 如何使用PyCharm进行GIMP插件开发?
我需要为GIMP开发一个插件,并希望继续使用PyCharm进行Python编辑等 仅供参考,我在Windows上 指示PyCharm使用GIMP附带的Python解释器后: 我还向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插件
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,这些并不难产生。我愿意看看这个,看看它是否可行。