2010-01-26 5 views
18

Ho appena scaricato wxPython e stavo eseguendo alcuni dei programmi di esempio da here. Tuttavia, su ogni riga che utilizza una variabile da wx. *, Viene restituita una "Variabile non definita dall'errore di importazione"Variabile non definita dall'importazione quando si utilizza wxPython in pydev

Ad esempio, il seguente programma genera cinque errori sulle righe 1,4,8 e due sulla linea 5 :

import wx 
class MyFrame(wx.Frame): 
    """ We simply derive a new class of Frame. """ 
    def __init__(self, parent, title): 
     wx.Frame.__init__(self, parent, title=title, size=(200,100)) 
     self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE) 
     self.Show(True) 
app = wx.App(False) 
frame = MyFrame(None, 'Small editor') 
app.MainLoop() 

Il programma, tuttavia, viene compilato e funziona perfettamente. Non ho apportato modifiche significative a pydev o eclipse e l'installazione wxPython è fresca.

+0

Sto avendo lo stesso problema. È disponibile qualche soluzione per questo problema oltre ad aspettare che i devolpers la risolvano? –

+0

Ho avuto lo stesso problema e se ne sono andati quando ho aggiornato a PyDev 1.5.6. –

risposta

3

Alcune delle versioni più recenti di pydev (circa gennaio 2010) hanno difficoltà di monitoraggio nomi giù importati. Probabilmente non è niente.

Se questa è la ancora che si verificano, segnalare il bug per Aptana appcelerator, anche se non c'è dubbio che già sanno su di esso.

Ho riscontrato questo problema quando utilizzo i pacchetti che ho scaricato di recente e alla fine gli errori scompaiono. Il mio problema più recente è stato il download di pygame (circa gennaio 2010).

Modifica

ho modificato la mia risposta sopra poiché le persone sono downvoting, e sto assumendo che sia perché l'informazione è stantio, o perché Appcelerator ha acquistato Aptana. Non ho usato pydev con Eclipse per quasi 2 anni e la situazione potrebbe essere diversa ora.

+0

Non penso che questo sia un bug, anche se potrebbe essere stato a gennaio. Vedi la mia risposta qui sotto. – oob

+0

Con pydev 1.5.6.2010033101, oggi ho ancora riscontrato un errore di importazione durante il tentativo di includere networkx per la prima volta. La procedura che hai menzionato nella tua risposta è ciò che sto usando da gennaio 2010 per superare il problema. Di tanto in tanto il semplice riavvio di Eclipse è stato sufficiente (ad es. Con pygame nel gennaio 2010), sebbene l'interprete rimuovi/aggiungi funzioni ogni volta. –

+0

Inoltre, penso di ricordare di aver letto da qualche parte sul sito di aptana una raccomandazione per utilizzare il metodo di rimozione/aggiunta che hai elencato sotto come soluzione. –

3

Prova

wx = wx

Non chiedere perché. Questo approccio (che ho trovato cercando di risolvere il problema in parti più piccole) sembra solo rimuovere il problema delle variabili non definite wx.

3
#import wx 
from wx import wx #@UnresolvedImport 

risolverà.

40

Questo è successo a me. Avevo installato PyDev e l'ho configurato e sono andato avanti alla mia maniera allegra. Alcuni mesi dopo, ho installato wxPython e ho avuto lo stesso problema. Un modo semplice per risolvere il problema è in eclisse:

Finestra -> Preferenze -> Pydev -> Interprete - Python

Basta togliere l'interprete di default e aggiungere uno nuovo (che può essere lo stesso che si aveva prima) . Pydev/Eclipse cerca nella directory di installazione di Python e aggiunge i percorsi corretti al tuo PYTHONPATH. Ho riavviato e tutto andava bene.Ho notato che ha aggiunto

C:\Python26\lib\site-packages\wx-2.8-msw-unicode

Così si potrebbe probabilmente solo aggiungere che alla PYTHONPATH invece di passare attraverso tutto quanto sopra, supponendo che il percorso è dove è installato questa directory.

A proposito, sto usando:

  1. Eclipse Helios
  2. Pydev 1.6.2.2010090812
  3. Python 2.6
  4. wxPython2.8-win32-unicode-2.8.11.0-py26

Ma penso che questa dovrebbe essere una soluzione piuttosto generale al problema.

+0

Cheers! Nota per OsX: l'installer wxpython apparentemente mette wxpython in una posizione diversa - dopo aver aggiunto "/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.6/site-packages/wx-2.8-mac- unicode "ha funzionato per me – christianbrodbeck

+0

Questa è la strada da percorrere. – initzero

+0

+1 Funzionato per me con PyDev 2.4.0 –

7

PyDev trova i riferimenti quando si imposta l'interprete in

Window -> Preferences -> Pydev -> Interpreter - Python 

Se wxPython non era nella directory site-packages la prima volta che l'installazione l'interprete, poi i riferimenti agli oggetti WX e i nomi non saranno noti alla funzione di ricerca degli editor. Per risolvere questo problema, rimuovere l'interprete dal

Window -> Preferences -> Pydev -> Interpreter - Python 

e quindi selezionare Nuovo. Ri-aggiungere nuovamente l'installazione python e premere apply. A questo punto, Pydev importa di nuovo tutti gli oggetti del pacchetto del sito e dovrebbe compilare il dizionario di ricerca. Dovrai riavviare Eclipse affinché le modifiche abbiano luogo.