Eu escrevi um módulo (um arquivo my_mod.py
que reside na pasta my_module
). Atualmente, estou trabalhando no arquivo cool_script.py
que reside na pasta cur_proj
. Abri a pasta no PyCharm usando o File - open (e presumo, portanto, que seja um projeto do PyCharm).
No ProjectView (CMD-7), posso ver meu projeto cur_proj
(em vermelho) e, em "Bibliotecas externas", vejo my_module
. Em cool_script.py, eu posso escrever
from my_module import my_mod as mm
e PyCharm até faz sugestões para o my_mod. Por enquanto, tudo bem.
No entanto, quando tento executar o cool_script.py, o PyCharm me diz "Nenhum módulo chamado my_module"
Isso me parece estranho, porque
A) no terminal (OS 10.10.2), em python, posso importar o módulo sem problemas - há uma entrada correspondente no PYTHONPATH em .bashrc
B) em PyCharm - Configurações - Projeto cur_proj - Intérprete de projeto - CogWheel ao lado do interpretador python - mais - mostra caminhos para o ícone selecionado do intérprete, os caminhos do PYTHONPATH aparecem (como eu acho que deveriam)
Portanto, por que recebo o erro quando tento executar o cool_script.py? - O que estou perdendo?
Notas:
- Não estou declarando uma versão python diferente / especial na parte superior do cool_script.py
- Certifiquei-me de que o caminho para
my_module
está correto - I colocar
__init__.py
arquivos (arquivos vazios) , tanto emmy_module
e emcur_proj
- Eu não estou usando
virtualenv
Adenda 2015-fev-25
Quando vou no PyCharm para Executar - Editar configurações, no meu projeto atual, há duas opções selecionadas com uma marca de seleção: " Adicionar raízes de conteúdo ao PYTHONPATH " e " Adicionar raízes de origem ao PYTHONPATH ". Quando desmarquei os dois, posso carregar meu módulo.
Então funciona agora - mas por quê ?
Outras perguntas surgiram:
- O que são "raízes de conteúdo" e o que são "raízes de origem"? E por que adicionar algo ao PYTHONPATH faz com que ele se rompa?
- devo desmarcar essas duas opções o tempo todo (também nos padrões, não apenas nas configurações específicas do projeto (painel esquerdo da caixa de diálogo Configurações de execução / depuração)?
Enable Django Support
as configurações Languages & Frameworks -> Django
na versão Pro do PyCharm. Estava abrindo um console django que causou problemas de importação.
from foldername.mymodule import mymethod
. Outra coisa que tive que fazer é adicionar a pasta _init .py vazia em todas as pastas que você usaria para acessar o módulo, para o caso defrom parentfolder.childfolder.mymodule ...
você precisar do init em duas pastas. Dependendo de onde as pastas estão localizadas uma em relação à outra, talvez seja necessário que você tenha um pacote de nível superior,sys.path
conforme descrito nesta resposta