Python fejl "ImportError: No module named"

Python er installeret i en lokal mappe.

Mit mappetræ ser således ud:

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

Min kode er her:

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

For at køre eksemplet skriver jeg python mountain.py, og i koden har jeg:

from toolkit.interface import interface

Og jeg får fejlen:

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

Jeg har allerede kontrolleret sys.path, og der har jeg mappen /site-packages. Jeg har også filen __init__.py.bin i mappen toolkit for at angive over for Python, at dette er en pakke. Jeg har også en __init__.py.bin i mappen examples.

Jeg ved ikke, hvorfor Python ikke kan finde filen, når den ligger i sys.path. Nogen ideer? Kan det være et problem med tilladelser? Har jeg brug for en eller anden eksekveringstilladelse?

Løsning

På baggrund af dine kommentarer til orip's indlæg gætter jeg på, at det er det, der er sket:

  1. Du redigerede __init____.py på windows.
  2. Windows-editoren tilføjede noget, der ikke var til udskrivning, måske en carriage-return (end-of-line i Windows er CR/LF; i unix er det kun LF), eller måske en CTRL-Z (windows end-of-file).
  3. Du brugte WinSCP til at kopiere filen til din unix-boks.
  4. WinSCP tænkte: "Dette har noget, der'ikke er almindelig tekst; jeg'vil sætte en .bin-udvidelse for at angive binære data."
  5. Den manglende __init__.py (nu kaldet __init__.py.bin) betyder at python ikke forstår toolkit som en pakke.
  6. Du opretter __init__.py i den rette mappe, og alt virker... ?
Kommentarer (7)

Er

(local directory)/site-packages/toolkit

har en __init____.py?

For at få import til at vandre gennem dine mapper skal hver mappe have en __init__.py-fil.

Kommentarer (2)

For at markere en mappe som en pakke skal du bruge en fil med navnet __init__.py, hjælper det?

Kommentarer (8)