2016-03-05 22 views
10

Ho bisogno di sviluppare un plugin per GIMP e vorrei stare con PyCharm per l'editing di Python, ecc.Come utilizzare PyCharm per lo sviluppo di plugin GIMP?

FYI, I'm on Windows.

Dopo aver diretto PyCharm per utilizzare l'interprete Python incluso con GIMP:

Project interpreter

Ho anche aggiunto un percorso per gimpfu.py per sbarazzarsi dell'errore sul from gimpfu import *:

enter image description here

Questo risolve l'errore sull'importazione, anche se impostato su Excluded.

ho sperimentato con l'impostazione questo elenco per Sources, Resources e Excluded e ancora ottenere gli errori per le costanti, come RGBA-IMAGE, TRANSPARENT_FILL, NORMAL_MODE, ecc

enter image description here

Qualche idea su come contorcere PyCharm in gioco bello per lo sviluppo di plugin GIMP?

Non proprio l'esecuzione di qualsiasi codice PyCharm, è davvero solo di essere utilizzato come un editor di codice bello, facilitare il controllo revisioni, ecc

+0

Stai ricevendo errori effettivi o solo avvisi? –

+0

Indizio probabilmente molto importante: cosa dice l'errore? Se passi il mouse sopra la linea rossa-ricci, cosa dice PyCharm? – Ian

+0

Hai provato a importare quelle cose in modo esplicito? Proverei 'import gimpfu', quindi accedo a quelle costanti come' gimpfu.RGBA_IMAGE'. – fodma1

risposta

4

Come hai trovato le variabili sono parte di .pyd file (dll files per Python). PyCharm non può ottenere firme per il contenuto di questi file.

Per builtins Python (come abs, all, any, etc.) PyCharm ha il proprio .py file che utilizza solo per le firme e documenti. Lo si può vedere se si fa clic su alcune di queste funcs e andare ad esso di dichiarazione:

enter image description here

PyCharm aprirà builtins.py file in è la cartella con i seguenti contenuti:

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 

Come si vedi le funzioni sono definite e documentate, ma non hanno implementazione, perché la loro implementazione è stata creata con C e posizionata da qualche parte nel file binario.

Pycharm non può fornire tale wrapper per ogni libreria. Di solito le persone che hanno creato i file .pyd forniscono i loro wrapper .py (ad esempio, modulo PyQt: nessuna implementazione Python nativa, solo firme).

Sembra che Gimp non abbia tale wrapper per alcune variabili. L'unico modo che vedo è creare manualmente una specie di proprio wrapper. Ad esempio, creare gimpfu_signatures.py con seguente contenuto:

RGBA_IMAGE = 1 
TRANSPARENT_FILL = 2 
NORMAL_MODE = 3 

e importarlo durante la creazione di plug-in:

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

Non elegante, ma meglio di niente.

...

più Una nota su percorso gimpfu.py s'. Se ho capito bene, hai appena aggiunto questo percorso al progetto. Potrebbe funzionare, ma il modo corretto è di aggiungerlo al progetto PYTHONPATH (nelle preferenze del progetto). Vedi this link per il manuale dettagliato.

+0

Grazie per questo. Lo esaminerò in dettaglio domani. Avevo paura che l'unico modo per avvicinarsi a questo potrebbe essere un'importazione artificiale indesiderabile. –

+0

Se questo è qualcosa che GIMP dovrebbe fornire, e qualcuno lo contribuirebbe (preferibilmente in un modo che viene aggiornato durante una compilazione), sicuramente lo accetteremo in GIMP. –

+0

La risposta data non è esattamente la risposta giusta, ma comunque assegnerò la taglia. –