2016-03-05 18 views
10

我需要爲GIMP開發一個插件,並希望繼續使用PyCharm進行Python編輯等。如何使用PyCharm進行GIMP插件開發?

僅供參考,我在Windows上。

指導PyCharm使用Python解釋器後,包含GIMP:

Project interpreter

我還添加了一個路徑gimpfu.py擺脫誤差對from gimpfu import *

enter image description here

這可以修復導入時的錯誤,即使設置爲Excluded

我嘗試用這個目錄設置爲SourcesResourcesExcluded,仍然得到錯誤的常量,如RGBA-IMAGETRANSPARENT_FILLNORMAL_MODE

enter image description here

如何扭曲PyCharm到播放任何想法GIMP插件開發很好嗎?

沒有真正運行從PyCharm任何代碼,它實際上只是被用作一個不錯的代碼編輯器,便於修改控制等

+0

您是否收到實際的錯誤或只是警告? –

+0

可能非常重要的線索:錯誤是什麼意思?如果您將鼠標懸停在紅色捲曲線上,PyCharm會說什麼? – Ian

+0

你有沒有試過明確地導入這些東西?我會嘗試'import gimpfu',然後像'gimpfu.RGBA_IMAGE'那樣訪問這些常量。 – fodma1

回答

4

當你發現這個變量是.pyd文件(dll files爲Python)的一部分。 PyCharm無法獲取此文件內容的簽名。

對於Python內建命令(如absallany等)PyCharm具有它是隻爲簽名和文檔使用自己.py文件。你可以看到它,如果你點擊一些這個funcs中的,去它的聲明:

enter image description here

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 

正如你看到函數被定義和記錄,但沒有實現,因爲它們的實現使用C創建並放置在二進制文件的某處。

Pycharm無法爲每個庫提供這樣的包裝。通常創建.pyd文件的人通常會提供.py包裝(例如,PyQt模塊:沒有本機python實現,只是簽名)。

看起來Gimp對於一些變量沒有這樣的包裝。我看到的唯一方法是手動創建某種自己的包裝。例如,創建gimpfu_signatures.py有以下內容:

RGBA_IMAGE = 1 
TRANSPARENT_FILL = 2 
NORMAL_MODE = 3 

並導入它,而你正在創建插件:

from gimpfu import * 
from gimpfu_signatures import * # comment on release 

不優雅,但更好然後什麼。

...關於gimpfu.py的路徑

還要說明。如果我理解正確,那麼您只是將此路徑添加到項目中。它可能工作,但正確的方法是將其添加到項目的PYTHONPATH(在項目首選項中)。有關詳細手冊,請參閱this link

+0

感謝您的支持。我明天會詳細介紹它。我擔心解決這個問題的唯一方法可能是一個不合乎需要的人工進口。 –

+0

如果這是GIMP應該提供的東西,並且有人會貢獻它(最好以在構建期間更新的方式),那麼我們肯定會接受GIMP。 –

+0

給出的答案並不完全是正確的答案,但我會獎賞賞金。 –