Python: нет модуля с именем ‘X’

#python

#python

Вопрос:

Я просмотрел предыдущие ответы, но ничего не помогло. Я запускаю python из того, что кажется правильным каталогом, со всеми файлами инициализации, и все же я получаю сообщение об ошибке.

Структура папок:

 .
├── Pipfile
├── Pipfile.lock
├── x_logic
│   ├── __init__.py
│   ├── # logic sits here
├── dev
│   ├── __init__.py
│   └── timings
│       ├── __init__.py
│       ├── measuring_timings.py
├── ...
  

Моя команда (запуск из корневой папки, т. Е. Той, Которая ограничивает и т. Pipfile Д.):

 python dev/timings/measuring_timings.py
  

Результат ( measuring_timings.py действительно импортируется из x_logic ):

 ModuleNotFoundError: No module named 'x_logic'
  

Тот же эффект с и без pipenv shell .

Тот же эффект, если попытаться запустить сразу из timings каталога.

Чего мне не хватает?

Комментарии:

1. Как вы пишете код для импорта x_logic ?

2. Перед импортом строки с ошибкой add print (sys.path) , которая покажет вам пути, используемые для поиска импорта, что даст вам подсказку. Затем попробуйте поискать в Google «пути импорта модулей python» для получения дополнительной помощи.

Ответ №1:

Я рекомендую запускать measuring_timing.py как модуль, иначе вы никогда не сможете увидеть x_logic модуль.

 $ python -m dev.timings.measuring_timings
  

Комментарии:

1. Увлекательно! Я знал о модулях, но я никогда не думал о запуске обычного файла pythong таким образом. Не могли бы вы объяснить, почему это работает, а обычный способ — нет? Я в недоумении..

2. Python может импортировать модули, которые находятся в пути sys. При запуске скрипта python, поскольку он является модулем, текущий путь временно присоединяется к пути sys.