ModuleNotFoundError при запуске скрипта из терминала - PullRequest
0 голосов
/ 07 июня 2018

У меня следующая структура папок:

  • app
    • __init__.py
    • utils
      • __init__.py
      • transform.py
    • products
      • __init__.py
      • fish.py

В fish.py я импортирую transform следующим образом: import utils.transform.

Когда я запускаю fish.py из Pycharm, он отлично работаетхорошо.Однако, когда я запускаю fish.py из терминала, я получаю ошибку ModuleNotFoundError: No module named 'utils'.

Команда, которую я использую в терминале: из папки приложения python products/fish.py.

Я уже посмотрелв решения, предложенные здесь: Импорт файлов из другой папки , добавление пути к папке приложения в sys.path помогает.Однако мне интересно, есть ли другой способ заставить его работать без добавления двух строк кода в fish.py.Это потому, что у меня много скриптов в каталоге / products, и я не хочу добавлять 2 строки кода в каждую из них.

Я посмотрел несколько проектов с открытым исходным кодом и увидел много примеров импорта модулей изпараллельная папка без добавления чего-либо в sys.path, например, здесь: https://github.com/jakubroztocil/httpie/blob/master/httpie/plugins/builtin.py#L5

Как заставить его работать для моего проекта таким же образом?

1 Ответ

0 голосов
/ 08 июня 2018

Вы, вероятно, хотите запустить python -m products.fish.Разница между этим и python products/fish.py заключается в том, что первое примерно эквивалентно выполнению import products.fish в оболочке (но с __name__, установленным на __main__), в то время как второе не знает о своем месте в иерархии пакетов..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...