2015-07-07 28 views
11

Ho un progetto avente la strutturaErrore di importazione, n modulo denominato xxxx

/example 
../prediction 
....__init__.py 
....a.py 

PYTHONPATH viene puntato/esempio

ora aprire il pitone nel terminale e digitare

import prediction 

è riuscito, ma se digito

import prediction.a 

restituisce l'errore

ImportError: No module named 'prediction.a'; 'prediction' is not a package 

perché è quello? non è quello già importato come pacchetto

+5

Esiste un file 'prediction.py' nella directory di lavoro che potrebbe avere la precedenza? Se si "importa la previsione", cos'è "previsione ?__ file__'? – larsks

+0

@larsks hai ragione, ho previsto.py ci –

+0

@larsks Posso suggerire di rendere il tuo commento una risposta? Ha risolto il mio problema, ma è arrivato solo al 4 ° posto nei risultati di ricerca di Google;) – IanS

risposta

24

Il comportamento che si sta vedendo può essere causato se c'è un modulo (foo.py) o un pacchetto (foo/__init__.py) nella directory corrente che ha un nome in conflitto.

Nel tuo caso, sospetto che ci sia un file chiamato prediction.py, e lo stai ricevendo invece del pacchetto prediction nella tua directory examples.

+1

Ho cercato di risolvere un problema simile ... questo ha risolto il mio problema. Grazie. –

+1

Come la tua risposta spiega solo la ragione ma non presenta una soluzione per importare un pacchetto in modo non ambiguo, vuol dire che Python non è in grado di farlo? – Robert

+0

Immagino dipenda da cosa intendi. Python * non * importa i file con un percorso assoluto, ma sei libero di modificare da solo il percorso di ricerca dei moduli per cambiare l'ordine (o le posizioni) in cui cerca le cose. Se desideri approfondire la questione in modo più dettagliato, è meglio che stia aprendo una nuova domanda qui su StackOverflow. – larsks

Problemi correlati