He escrito un módulo (un archivo my_mod.py
que reside en la carpeta my_module
). Actualmente, estoy trabajando en el archivo cool_script.py
que reside en la carpeta cur_proj
. He abierto la carpeta en PyCharm usando File - open (y supongo, por lo tanto, es un proyecto de PyCharm).
En ProjectView (CMD-7), puedo ver mi proyecto cur_proj
(en rojo) y en "Bibliotecas externas" sí veo my_module
. En cool_script.py, puedo escribir
from my_module import my_mod as mm
y PyCharm incluso hace sugerencias para my_mod. Hasta aquí todo bien.
Sin embargo, cuando intento ejecutar cool_script.py, PyCharm me dice "Ningún módulo llamado my_module"
Esto me parece extraño, porque
A) en el terminal (OS 10.10.2), en python, puedo importar el módulo sin problemas: hay una entrada correspondiente en PYTHONPATH en .bashrc
B) en PyCharm - Configuración - Proyecto cur_proj - Intérprete de proyecto - CogWheel junto al intérprete de Python - más - mostrar rutas para el icono de intérprete seleccionado, las rutas de PYTHONPATH aparecen (como creo que deberían)
Por lo tanto, ¿por qué recibo el error cuando intento ejecutar cool_script.py? - ¿Qué me estoy perdiendo?
Notas:
- No estoy declarando una versión de python diferente / especial en la parte superior de cool_script.py
- Me aseguré de que el camino hacia fuera
my_module
correcto - Me puse
__init__.py
archivos (archivos vacíos) , tanto enmy_module
y encur_proj
- No estoy usando
virtualenv
Anexo 2015-Feb-25
Cuando en PyCharm para ejecutar - Editar configuraciones, para mi proyecto actual, hay dos opciones que se seleccionan con una marca de verificación: " Agregar raíces de contenido a PYTHONPATH " y " Agregar raíces de origen a PYTHONPATH ". Cuando tengo ambos desmarcados, puedo cargar mi módulo.
Entonces funciona ahora, pero ¿por qué ?
Surgieron otras preguntas:
- ¿Qué son las "raíces de contenido" y qué son las "raíces de origen"? ¿Y por qué agregar algo al PYTHONPATH hace que de alguna manera se rompa?
- ¿Debo desmarcar ambas opciones todo el tiempo (también en los valores predeterminados, no solo en las configuraciones específicas del proyecto (panel izquierdo del cuadro de diálogo Ejecutar / Depurar configuraciones)?
Enable Django Support
la configuración Languages & Frameworks -> Django
en la versión Pro de PyCharm. Estaba abriendo una consola de django que causó los problemas de importación.
from foldername.mymodule import mymethod
. Otra cosa que he tenido que hacer es agregar la carpeta vacía _init .py en todas las carpetas que usaría para acceder a su módulo, por lo que en caso defrom parentfolder.childfolder.mymodule ...
que necesite init en dos carpetas. Dependiendo de dónde se encuentren las carpetas entre sí, es posible que necesite un paquete de nivel superiorsys.path
como se describe en esta respuesta