2012-05-29 11 views
6

Non so se pycharm abbia a che fare con il problema, o se sono io a fare il noob.problemi nell'importazione di moduli python da altri pacchetti (pycharm fornisce riferimenti non risolti)

Ecco uno screenshot del mio layout cartella e tre file di codice:

screenshot

sto usando PyCharm sulle finestre e "my_working_directory" è la mia directory di lavoro. Puoi vedere nello screenshot che in mod1.py "from package2.mod2" è sottolineato con "riferimento non risolto".

Quando si tenta di eseguire mod1.py ottengo:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py 
Traceback (most recent call last): 
    File "C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py", line 1, in <module> 
    from package2.mod2 import SomeClass 
ImportError: No module named package2.mod2 

Quando eseguo main.py ottengo:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/main.py 
hi 

non capisco il motivo per cui si lavora e non il contrario .

Il problema principale è che pycharm non mi dà alcun completamento automatico e da mod1 non è in grado di rilevare package2. Questo è un grosso problema perché package1 è il mio pacchetto di visualizzazione, package2 è i miei modelli o utils o pacchetto lib (in un grande controller di visualizzazione del modello). (esempio https://github.com/coto/gae-boilerplate/blob/master/web/handlers.py pycharm non sta rilevando nessuna delle istruzioni lib.? import ?. (fornendo riferimento non risolto)

Qualcuno sa cosa sta succedendo? È questo il modo migliore di importare i pacchetti? avere autocomplete

dovrebbe "my_working_directory" essere trasformato in un pacchetto, facendo un altro init di file .py

+1

Pensa di aver bisogno di aggiungerlo al tuo percorso python. puoi vedere package1 da main, ma quando importi mod1 sei in mod1 non puoi vedere package2 dall'importazione lì perché è nella cartella genitore, non in package1. – GP89

+1

@ GP89 "aggiungilo al tuo percorso Python", che cos'è "it"? C: \ Users \ Robert \ PycharmProjects \ play \ my_working_directory \? Inoltre dovrebbe essere il lavoro del mio IDE aggiungere questo per me? o per tutti i miei progetti dovrei avere problemi con le mie impostazioni del percorso di Windows sotto compter> proprietà> impostazioni avanzate> variabili d'ambiente –

+4

Ah, ho trovato sotto pycharm> impostazioni> struttura del progetto, ho dovuto cambiare il progetto root da/play a/play/working_directory !!! Grazie mille per avermi aiutato a capirlo. –

risposta

2

potrebbe essere che C:?/Users/Robert/PycharmProjects/gioco non è sulla vostra %PYTHON_PATH%

+0

Ciao Jakob, penso che potresti essere su qualcosa. Ho aggiunto print sys.path a mod1.py e main.py. Quindi ho eseguito mod1.py e registrato il percorso. Quindi ho eseguito main.py e registrato il percorso. La differenza tra i due set di percorsi è: set (['C: \\ Users \\ Robert \\ PycharmProjects \\ play \\ my_working_directory \\ package1']) impostato (['C: \\ Users \\ Robert \ \ PycharmProjects \\ giocano \\ my_working_directory ']) –

+0

in mod1 ottengo path1 = sys.path for i in path1: se "giocare" in i: stampa i C: \ Users \ Robert \ PycharmProjects \ gioco \ my_working_directory \ package1 C: \ Users \ Robert \ PycharmProjects \ play –

+0

in main.py ottengo: for i in path2: se "giocare" in i: stampa i C: \ Users \ Robert \ PycharmProjects gioco \ my_working_directory \ C: \ Users \ Robert \ PycharmProjects \ giocano –

Problemi correlati