[Python] WingIDE, package e debugger

Daniele Varrazzo piro a develer.com
Lun 2 Apr 2007 00:07:25 CEST


Joril ha scritto:
> Scusate, temo sia una cavolata ma non riesco ad uscirne *_*;
> Sto provando WingIDE con un progetto minuscolo, con questa struttura di directory:
> 
> src (dir)
> 	Main.py
> 	test (dir)
> 		__init__.py
> 		Test.py
> 
> Dentro Main.py ho un semplicissimo
> 
> from test.Test import Testing
> 
> Se lancio Main tramite "Execute current file" funziona tutto, nel senso che mi compare una shell con l'output dovuto all'import di test/__init__.py e di Testing dentro Test.py.
> Se invece lo lancio tramite "Debug selected" mi esce l'eccezione "ImportError: No module named test.Test"
> So che potrei "manomettere" sys.path da codice per accomodare la cosa, ma vorrei capire il motivo della disparita' di trattamento tra debug ed esecuzione normale.. :/ Anche perche' presumo che risolvendo questo punto riuscirei ad usare anche il "go to definition" quando riguarda Test.py (al momento infatti mi esce "could not find definition of 'Test'")

Probabilmente è una faccenda di directory corrente: la cwd viene inclusa nel 
sys.path quando esegui uno script. Forse nel primo caso WingIDE effettua un 
chdir nella directory contenente il file corrente e non lo fa nel secondo caso.

Tanto per provare, aggiungi un "print '\n'.join(sys.path)" nel Main.py. Di 
solito la cwd è il primo elemento della lista.

Puoi anche evitare di manomettere il sys.path e aggiungere invece il percorso 
contenente il package nella variabile d'ambiente PYTHONPATH: ti garantirà il 
corretto funzionamento del package in tutte le condizioni. Anche sott'acqua. A 
lume di naso, la IDE ti dovrebbe permettere di impostarlo da qualche parte.

Ciao!

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python