2013-08-20 10 views
8

Sto cercando di importare un progetto legacy in pycharm per il debug. La struttura di directory si presenta come:Importa directory in pycharm

cartella principale ---> cartella una cartella superiore

---> cartella due

Il problema è che i programmi nelle sottocartelle utilizzano:

import top 
from top import module 

PyCharm restituisce l'errore: "No modulo denominato top"

Come posso risolvere questo problema?

+1

La tua cartella principale ha un file '__init __. Py'? In caso contrario, non è un modulo. –

risposta

11

Prima cosa per assicurarsi di fare ciò che ha detto Games, è necessario assicurarsi che ogni cartella che rappresenta un pacchetto venga eseguita inserendo un file __init__.py che è un file python vuoto denominato esattamente __init__.py che dice all'interprete che il cartella è un pacchetto python.

La seconda cosa da cercare è che a pycharm piace lamentarsi del codice importato se PyCharm non conosce questa directory. Passare alla configurazione dell'interprete di progetto e andare a Percorsi e aggiungere i riferimenti di percorso che non si trovano nel progetto o direttamente sotto l'interprete.

Un'altra cosa da aggiungere è impostare la radice di origine del codice del progetto facendo clic con il pulsante destro del mouse sulla cartella che rappresenta la root e facendo clic su "Contrassegna directory come ..."> "Source Root".

+0

Mi ha salvato un sacco di marcatori rossi nel mio progetto! –

+0

C'è un modo per dire a PyCharm di cercare in TUTTI i moduli/sottocartelle nel progetto? Abbiamo una struttura di directory MOLTO alta ed è molto difficile impostare manualmente tutte le cartelle come "Sorgenti". – jimtut

+0

Non è necessario impostare tutte le directory come origini, basta impostare la root. Se hai più radici potresti organizzare il tuo progetto in modo sbagliato. – BrokenRobot

1

Ho riscontrato lo stesso problema, ma non è causato dalla mancanza di init .py file. Il motivo è che ci sono due moduli con lo stesso nome nel progetto, quindi PyCharm non sa come importare. La cosa strana è che PyCharm riporta solo questo errore sul tempo di esecuzione.

Il mio progetto Files:

source root1 
    |-- moduleA 
     |-- __init__.py 
     |-- A.py 

source root2 
    |-- moduleA 
     |-- __init__.py 
     |-- B.py 

In realtà, il root1 fonte è il mio codice, e ROOT2 fonte è il mio codice di prova.

quindi la soluzione è modificare il nome del modulo di test.

source root1 
    |-- moduleA 
     |-- __init__.py 
     |-- A.py 

source root2 
    |-- testmoduleA 
     |-- __init__.py 
     |-- B.py