Python - модуль не найден

Я начинаю с Python. Прежде чем начать, вот моя структура папок Python

-project
----src
------model
--------order.py
------hello-world.py

В src у меня есть папка с именем model, у которой есть файл Python под названием order.py, содержимое которого следующее:

class SellOrder(object):
    def __init__(self,genericName,brandName):
        self.genericName = genericName
        self.brandName = brandName

Далее мой hello-world.py находится внутри папки src, на одном уровне выше order.py:

import model.order.SellOrder

order = SellOrder("Test","Test")

print order.brandName

Всякий раз, когда я запускаю python hello-world.py, это приводит к ошибке

Traceback (most recent call last):
  File "hello-world.py", line 1, in <module>
    import model.order.SellOrder
ImportError: No module named model.order.SellOrder

Есть ли что-то, что я пропустил?

Ответ 1

Все модули в Python должны иметь определенную структуру каталогов. Здесь вы можете найти подробности.

Создайте пустой файл с именем __init__.py в каталоге model, чтобы структура вашего каталога выглядела примерно так:

.
└── project
    └── src
        ├── hello-world.py
        └── model
            ├── __init__.py
            └── order.py

Также в вашем файле hello-world.py измените оператор import на следующее:

from model.order import SellOrder

Это должно исправить это :)

PS: Если вы размещаете свой model каталог в другом месте (не в той же ветки каталога), вам придется изменить путь python с помощью sys.path.

Ответ 2

вам нужен файл с именем __init__.py (два символа подчеркивания с каждой стороны) в каждой папке в иерархии, поэтому один в src/ и один в model/. Это то, что питон ищет, чтобы знать, что он должен получить доступ к определенной папке. Файлы должны содержать инструкции инициализации, но даже если вы их создадите пустым, это решит его.

Ответ 3

Вы должны убедиться, что модуль установлен для всех версий python

Вы можете проверить, установлен ли модуль для python, запустив:

pip uninstall moduleName

Если он установлен, он спросит вас, хотите ли вы его удалить или нет. Моя проблема заключалась в том, что он был установлен для python, но не для python3. Чтобы проверить, установлен ли модуль для python3, запустите:

python3 -m pip uninstall moduleName

После этого, если вы обнаружите, что модуль не установлен для одной или обеих версий, используйте эти две команды для установки модуля.

  • pip install moduleName
  • python3 -m pip install moduleName