|
|
|
|
Strumenti |
11-05-2009, 11:16 | #1 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
[python] importError
Ciao, sono alle prime armi con python e già sorgono i primi problemi...allora...ho installato pydev su eclipse. Per fare qualche prova ho creato due package "nested" e "nested2", ognuno di essi contiene due file (oltre i file __init__) che sono example ed example2 rispettivamente. I file sono i seguenti:
su example ho creato solo un metodo chiamato fib: def fib(n): a, b = 0, 1 while b < n: print(b) a, b = b, a+b mentre in example2 voglio solo importare il metodo fib così da poterlo utilizzare. Ma se scrivo from root.nested.example import fib mi viene restituito un importError dicendomi che non riesce a trovare nessun modulo fib. La stessa prova l'ho fatta con IDLE (la shell di python) e non mi ha dato problemi....penso che sia un problema di path...ma come posso risolverlo??grazie |
11-05-2009, 11:28 | #2 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
All'inizio del codice metti questo:
Codice:
import sys sys.path.append('.')
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
11-05-2009, 11:43 | #3 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
ho provato ma non funziona..mi ritorna sempre lo stesso errore...
...la struttura delle cartelle è fatta così, non so se può servire: Prova (progetto) ---- src (source folder) --------root (package) ------------nested (package) example.py ------------nested2 example2.py ho provato anche ad aggiungere la cartella Prova del progetto al PYTHONPATH andando sulle opzioni di pydev ma non funziona... |
11-05-2009, 11:55 | #4 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Dipende tutto dalla cartella dove si trova il file principale. Mi dici dove l'hai piazzato?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
11-05-2009, 12:02 | #5 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
su Vista il progetto è posizionato in:
C:\Users\Peppe\Documents\Prova |
11-05-2009, 12:16 | #6 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
OK, e il file principale (mettiamo si chiami main.py) si trova in questa cartella?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
11-05-2009, 12:23 | #7 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
mmm...non ho nessun file principale...l'idea era solo quella di far partire example2 in modo da richiamare il modulo fib...tra l'altro i file .py non sono classi..ho scritto solo il codice del modulo in uno e la chiamata al modulo nell'altro...
...non si può fare quello che ho fatto?? |
11-05-2009, 12:38 | #8 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Dovrebbe funzionarti con
from root.nested.example import fib se example2 è messo dentro la cartella Prova, ovviamente aggiungendo prima le due righe di codice che ho inserito. Ricordati di controllare che la cartella CORRENTE del progetto dev'essere Prova, altrimenti non funziona.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
11-05-2009, 13:16 | #9 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
non va neanche così....boh...non so più cosa fare....
|
11-05-2009, 13:21 | #10 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
quello che mi restituisce è questo:
Traceback (most recent call last): File "C:\Users\Peppe\Documents\Prova\src\root\nested2\example2.py", line 9, in <module> from root.nested.example import fib ImportError: No module named root.nested.example il file example2 è il seguente: import sys sys.path.append('.') from root.nested.example import fib f = fib(10) |
11-05-2009, 13:27 | #11 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Fai una cosa allora: metti tutto dentro un archivio zip e allegalo qui, così posso provarlo.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
11-05-2009, 13:30 | #12 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
ok grazie....
|
11-05-2009, 15:59 | #13 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Come immaginavo, è un problema di path dei vari oggetti.
Se metti example2.py dentro la cartella src, e da qui fai lo eseguire da python, vedrai che funzionerà.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
11-05-2009, 16:03 | #14 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
si ok così funziona..però se volessi creare più package e richiamare moduli da altri package come faccio?...fai conto che lo stesso esempio sulla shell IDLE funziona...
|
11-05-2009, 16:05 | #15 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
inoltre, se dovessi creare un altro file all'interno del package nested che richiama la stessa funzione in example non funziona....
edit: mi correggo...in questo caso funziona... |
11-05-2009, 16:16 | #16 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
Quindi se hai il package "pippo" che usa il modulo "pluto" del package "topolino", e tu usi "pippo", devi assicurarti che "pippo" e "topolino" siano sempre raggiungibili da Python.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
11-05-2009, 16:17 | #17 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
scusa ma nel mio caso non erano raggiungibili??...io nel PYTHONPATH avevo messo la source folder fino a src
|
11-05-2009, 16:48 | #18 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
quel che intendo è: due file che appartengono a package differenti di uno stesso progetto non possono importare moduli dell'uno o dell'altro?
|
11-05-2009, 16:58 | #19 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
|
Quote:
E' possibile. Adesso non so di preciso se è possibile che ognuno importi moduli dell'altro, ma sicuramente funziona in una sola direzione (un package che usa moduli di un altro).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
11-05-2009, 17:08 | #20 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
ah ok quindi example non può richiamare un modulo di example2 se quest'ultimo richiama un modulo di example...
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:34.