Python error "ImportError: Geen module met de naam"

Python wordt geïnstalleerd in een lokale directory.

Mijn mapstructuur ziet er als volgt uit:

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

Mijn code staat hier in:

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

Om het voorbeeld uit te voeren, schrijf ik python mountain.py, en in de code heb ik:

from toolkit.interface import interface

En ik krijg de foutmelding:

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

Ik heb sys.path al gecontroleerd en daar heb ik de directory /site-packages staan. Ook heb ik het bestand __init__.py.bin in de toolkit map om aan Python aan te geven dat dit een package is. Ik heb ook een __init__.py.bin in de examples directory.

Ik weet niet waarom Python het bestand niet kan vinden als het in sys.path staat. Iemand een idee? Kan het een probleem met de rechten zijn? Heb ik een uitvoeringstoestemming nodig?

Oplossing

Gebaseerd op uw commentaar op Orip's post, denk ik dat dit is wat er gebeurd is:

  1. Je hebt __init__.py bewerkt op windows.
  2. De windows editor voegde iets niet-afdrukbaars toe, misschien een carriage-return (einde-van-regel in Windows is CR/LF; in unix is het alleen LF), of misschien een CTRL-Z (windows einde-van-bestand).
  3. Je hebt WinSCP gebruikt om het bestand naar je unix box te kopiëren.
  4. WinSCP dacht: "Dit heeft iets dat'niet basistekst is; ik'zal een .bin extensie zetten om binaire data aan te geven."
  5. Het ontbreken van __init__.py (heet nu __init__.py.bin) betekent dat python toolkit niet'begrijpt als pakket.
  6. Je maakt __init__.py aan in de juiste directory en alles werkt... ?
Commentaren (7)

Does

(local directory)/site-packages/toolkit

een __init__.py?

Om import te laten wandelen door je mappen moet elke map een __init__.py bestand hebben.

Commentaren (2)

Om een map als pakket te markeren heb je een bestand nodig met de naam __init__.py, helpt dit?

Commentaren (8)