2012-07-10 6 views
21

Sto usando PyCharm 2.5 su Ubuntu 11.10, provando a sviluppare un'applicazione usando PyGObject 3.0 su Python 3.2.2. Ho installato il pacchetto Ubuntu python3-gobject e quando eseguo il mio codice, funziona esattamente come previsto.PyCharm non può risolvere PyGObject 3.0, ma il codice funziona bene

Tuttavia, PyCharm non sembra trovare nessuno dei moduli PyGObject. Dice Unresolved refrence: 'Gtk' quando passo il mouse su Gtk nella mia dichiarazione di importazione, e ovviamente nessuno dei lavori di completamento automatico funziona.

Questo è il mio codice:

#!/usr/bin/env python3 

from gi.repository import Gtk 

win = Gtk.Window() 
win.connect("delete-event", Gtk.main_quit) 
win.show_all() 
Gtk.main() 

Ho anche provato a fare un ambiente virtuale pitone e quindi l'installazione di PyGObject dai sorgenti in esso, e poi anche provato a fare link simbolici da tutti i file .py in site-packages/gi/overrides a site-packages/gi/repository, tutto senza fortuna.

Qualsiasi consiglio sarebbe molto apprezzato!

risposta

29

In Gtk + 3 I collegamenti Python ai moduli binari vengono generati dinamicamente utilizzando i database *.typelib. L'importatore dinamico per l'accesso a tutti i moduli si trova in gi.repository. PyCharm non è in grado di rilevare questi moduli utilizzando le informazioni sul codice, poiché richiedono una gestione speciale.

Ho inoltrato una richiesta di funzionalità per questo problema: PY-6932. Sentiti libero di votare per questo.

+0

Ah, PyGObject è molto di fantasia davvero. Votato per il tuo servizio, forse possiamo averlo un giorno! : D – HOLOGRAPHICpizza

+0

Inoltre, qualsiasi altro IDE supporta questo? Sto per sviluppare un'applicazione GTK + 3 di dimensioni moderate e mi piacerebbe avere un buon IDE da usare per questo. Come si chiamerebbe questa funzione in modo che io possa cercarla? – HOLOGRAPHICpizza

+0

È possibile utilizzare bpython o bpython3 –

39

Posizionare il cursore testo all'interno della redlined Gtk in:

from gi.repository import Gtk 

colpito Alt +Enter e scegliere "Genera stub per modulo binario"