[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