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