Грешка на Python "ImportError: No module named"

Python е инсталиран в локална директория.

Дървото на директориите ми изглежда по следния начин:

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

Моят код е тук:

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

За да изпълня примера, пиша python mountain.py, а в кода имам:

from toolkit.interface import interface

И получавам грешката:

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

Вече проверих sys.path и там имам директорията /site-packages. Също така имам файла __init__.py.bin в папката с инструменти, за да укажа на Python, че това е пакет. Имам и файл __init__.py.bin в директорията с примери.

Не знам защо Python не може да намери файла, когато той е в sys.path. Има ли някакви идеи? Може ли да е проблем с разрешенията? Трябва ли ми някакво разрешение за изпълнение?

Решение

Въз основа на коментарите ви към публикацията на orip's, предполагам, че това се е случило:

  1. Редактирали сте __init__.py на Windows.
  2. Редакторът на windows е добавил нещо непечатащо, може би carriage-return (краят на реда в Windows е CR/LF; в unix е само LF), или може би CTRL-Z (край на файла в windows).
  3. Използвали сте WinSCP, за да копирате файла в кутията на Unix.
  4. WinSCP си е помислил: "Това има нещо, което не е основен текст; ще сложа разширение .bin, за да обознача двоични данни."
  5. Липсата на __init__.py (сега се нарича __init__.py.bin) означава, че python не разбира toolkit като пакет.
  6. Създавате __init__.py в съответната директория и всичко работи... ?
Коментари (7)

Има ли

(local directory)/site-packages/toolkit

има __init__.py?

За да може импортът да се разхожда из директориите ви, всяка директория трябва да има файл __init__.py.

Коментари (2)

За да маркирате дадена директория като пакет, ви е необходим файл с име __init__.py, това помага ли ви?

Коментари (8)