Ho scritto un modulo (un file my_mod.py
che risiede nella cartella my_module
). Attualmente, sto lavorando nel 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).
In ProjectView (CMD-7), posso vedere il mio progetto cur_proj
(in rosso) e sotto "Librerie esterne" che vedo my_module
. In cool_script.py, posso scrivere
from my_module import my_mod as mm
e PyCharm fornisce anche suggerimenti per my_mod. Fin qui tutto bene.
Tuttavia, quando provo a eseguire cool_script.py, PyCharm mi dice "Nessun modulo chiamato my_module"
Questo mi sembra strano, perché
A) nel terminale (OS 10.10.2), in Python, posso importare il modulo senza problemi - c'è una voce corrispondente nel PYTHONPATH in .bashrc
B) in PyCharm - Impostazioni - Progetto cur_proj - Interprete di progetto - CogWheel accanto all'interprete python - altro - mostra i percorsi per l'icona dell'interprete selezionata, i percorsi da PYTHONPATH appaiono (come penso che dovrebbero)
Quindi, perché visualizzo l'errore quando provo a eseguire cool_script.py? - Cosa mi sto perdendo?
Appunti:
- Non sto dichiarando una versione diversa / speciale di Python nella parte superiore di cool_script.py
- Mi sono assicurato che il percorso verso
my_module
fosse corretto - Ho messo
__init__.py
i file (file vuoto) sia inmy_module
e incur_proj
- Non sto usando
virtualenv
Addendum 2015-febbraio-25
Quando vado in PyCharm per eseguire - Modifica configurazioni, per il mio progetto attuale, ci sono due opzioni che sono selezionate con un segno di spunta: " Aggiungi root di contenuto a PYTHONPATH " e " Aggiungi root di origine a PYTHONPATH ". Quando ho entrambi deselezionato, posso caricare il mio modulo.
Quindi funziona ora - ma perché ?
Sono emerse ulteriori domande:
- Cosa sono le "origini del contenuto" e quali sono le "origini della radice"? E perché l'aggiunta di qualcosa al PYTHONPATH lo fa spezzare in qualche modo?
- dovrei deselezionare entrambe queste opzioni continuamente (quindi anche nelle impostazioni predefinite, non solo le configurazioni specifiche del progetto (pannello di sinistra della finestra di dialogo Esegui / Debug Configurazioni)?
Enable Django Support
le impostazioni Languages & Frameworks -> Django
nella versione Pro di PyCharm. Stava aprendo una console Django che causava problemi di importazione.
from foldername.mymodule import mymethod
. Un'altra cosa che ho dovuto fare è aggiungere la cartella _init .py vuota in tutte le cartelle che useresti per accedere al tuo modulo, quindi in casofrom parentfolder.childfolder.mymodule ...
avessi bisogno di init in due cartelle. A seconda di dove si trovano le cartelle l'una rispetto all'altra, potrebbe essere necessario disporre di un pacchetto di livello superioresys.path
come descritto in questa risposta