#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.