Python error "ImportError: Nenhum módulo chamado"

Python é instalado em um diretório local.

A minha árvore de directórios tem este aspecto:

(local directory)/site-packages/toolkit/interface.py

O meu código está aqui dentro:

(local directory)/site-packages/toolkit/examples/mountain.py

Para executar o exemplo, eu escrevo python mountain.py, e no código que eu tenho:

from toolkit.interface import interface

E eu recebo o erro:

Traceback (most recent call last):
  File "mountain.py", line 28, in ?
    from toolkit.interface import interface
ImportError: No module named toolkit.interface

Eu já verifiquei sys.path e lá eu tenho o diretório /site-packages. Também, tenho o arquivo __init__.py.bin na pasta toolkit para indicar ao Python que este é um pacote. Eu também tenho o arquivo __init__.py.bin no diretório de exemplos.

Eu não sei porque Python não consegue encontrar o arquivo quando ele está em sys.path. Alguma ideia? Pode ser um problema de permissões? Preciso de alguma permissão de execução?

Solução

Com base nos seus comentários ao post de orip's, acho que foi isto que aconteceu:

  1. Você editou __init__.py nas janelas.
  2. O editor do windows adicionou algo sem impressão, talvez um carriage-return (fim de linha no Windows é CR/LF; em unix é apenas LF), ou talvez um CTRL-Z (fim de ficheiro do windows).
  3. Você usou o WinSCP para copiar o ficheiro para a sua caixa unix.
  4. WinSCP pensou: "Isto tem algo que'não é texto básico; I'irá colocar uma extensão .bin para indicar dados binários."
  5. O __init__.py (agora chamado __init__.py.bin) significa que python doesn't entende o toolkit como um pacote.
  6. Você cria o __init__.py no diretório apropriado e tudo funciona... ?
Comentários (7)

Faz

(local directory)/site-packages/toolkit

ter um __init__.py?

Para importar walk através de seus diretórios, cada diretório deve ter um arquivo __init__.py.

Comentários (2)

Para marcar um diretório como um pacote você precisa de um arquivo chamado __init__.py, isso ajuda?

Comentários (8)