Ho scritto un modulo (un fileche risiede nella cartella my_module
). Attualmente sto lavorando al file cool_script.py
che risiede nella cartella cur_proj
. Ho aperto la cartella in PyCharm usando File - open (e presumo, quindi, è un progetto PyCharm).Errore PyCharm: "Nessun modulo" quando si tenta di importare il proprio modulo (script python)
In ProjectView (CMD-7), posso vedere il mio progetto cur_proj
(in rosso) e in "Librerie esterne" vedo my_module
. In cool_script.py, posso scrivere
from my_module import my_mod as mm
e PyCharm rende ancora suggerimento per my_mod. Fin qui tutto bene.
Tuttavia, quando provo a fare funzionare cool_script.py, PyCharm mi dice "No module named my_module"
Questo sembra strano per me, perché
A) nel terminale (OS 10.10.2), in python, posso importare il modulo senza problemi - c'è una voce corrispondente in PYTHONPATH in .bashrc
B) in PyCharm - Impostazioni - Progetto cur_proj - Interprete di progetto - CogWheel accanto a Python i nterpreter - more - mostra i percorsi per l'icona selezionata dell'interprete, i percorsi da PYTHONPATH appaiono (come penso dovrebbero)
Quindi, perché ottengo l'errore quando provo a eseguire cool_script.py? - Cosa mi manca?
Note:
- Sono not declaring a different/special python version in cima cool_script.py
- ho fatto in modo che the path to
my_module
is correct - ho put
__init__.py
files (empty files) sia inmy_module
e incur_proj
- non sto usando
virtualenv
Addendum 2015-Feb-25
Quando vado in PyCharm to Run - Modifica configurazioni, per il mio progetto attuale, ci sono due opzioni che vengono selezionati con un segno di spunta: "Aggiungi radici di contenuti di PYTHONPATH" e "Aggiungi root di origine a PYTHONPATH". Quando ho entrambi deselezionato, posso caricare il mio modulo.
Quindi funziona ora - ma perché?
Altre domande emerse:
- Cosa sono le "radici" di contenuti e quali sono le radici "source"? E perché aggiungere qualcosa al PYTHONPATH lo fa in qualche modo spezzare?
- devo deselezionare entrambe le opzioni tutte le volte (quindi anche nei valori di default, non solo le configurazioni specifiche del progetto (pannello a sinistra della finestra di dialogo Esegui/debug configurazioni)?
È possibile che l'abbia già provato, ma quando si importano moduli da altri pacchetti, includere nomepacchetto 'da foldername.mymodule import mymethod'. Un'altra cosa che ho dovuto fare è aggiungere la cartella __init_.py vuota in tutte le cartelle che usereste per arrivare al vostro modulo, quindi in caso di 'from parentfolder.childfolder.mymodule ...' avreste bisogno di init in due cartelle. A seconda di dove si trovano le cartelle l'una rispetto all'altra, potrebbe essere necessario avere un pacchetto di primo livello in 'sys.path' come descritto in questa [risposta] (http://stackoverflow.com/questions/8951255/import-script- from-a-parent-directory) – ziddarth
Ho avuto anche il tuo problema. Il seguente post ha risolto i miei problemi: http://stackoverflow.com/questions/21236824/unresolved-reference-issue-in-pycharm – user3155053
Hai identificato il motivo per cui deselezionare quelle caselle di controllo funziona in realtà piuttosto che controllarle? –