@ivg97

Почему при выполнении команды alembic upgrade head получаю ошибку импорта ModuleNotFoundError: No module named 'dotenv'?

Есть сервис, написанный на fastapi и имеет структуру указанную ниже:
66170e1e3cf71511305560.png

Виртуальное окружение настроено и установлены все библиотеки, сервис запускается без проблем. Инициализация переменных окружения происходит в файле config.py.

После создания миграций при выполнении команды alembic upgrade head получаю следующую ошибку:

(venv) user@user-PC:~/projects/fiat/exchanger/ex/ex_coin$ alembic upgrade head
Traceback (most recent call last):
  File "/usr/bin/alembic", line 33, in <module>
    sys.exit(load_entry_point('alembic==1.7.6.dev0', 'console_scripts', 'alembic')())
  File "/usr/lib/python3/dist-packages/alembic/config.py", line 588, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/usr/lib/python3/dist-packages/alembic/config.py", line 582, in main
    self.run_cmd(cfg, options)
  File "/usr/lib/python3/dist-packages/alembic/config.py", line 559, in run_cmd
    fn(
  File "/usr/lib/python3/dist-packages/alembic/command.py", line 320, in upgrade
    script.run_env()
  File "/usr/lib/python3/dist-packages/alembic/script/base.py", line 563, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/usr/lib/python3/dist-packages/alembic/util/pyfiles.py", line 92, in load_python_file
    module = load_module_py(module_id, path)
  File "/usr/lib/python3/dist-packages/alembic/util/pyfiles.py", line 108, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/ivg/projects/fiat/exchanger/ex/ex_coin/migrations/env.py", line 8, in <module>
    from src.config import DB_HOST, DB_NAME, DB_PASS, DB_PORT, DB_USER
  File "/home/ivg/projects/fiat/exchanger/ex/ex_coin/./src/config.py", line 1, in <module>
    from dotenv import load_dotenv
ModuleNotFoundError: No module named 'dotenv'


config.py
from dotenv import load_dotenv
import os

load_dotenv()

DB_HOST = os.environ.get("DB_HOST")
DB_PORT = os.environ.get("DB_PORT")
DB_NAME = os.environ.get("DB_NAME")
DB_USER = os.environ.get("DB_USER")
DB_PASS = os.environ.get("DB_PASS")


env.py
from src.config import DB_HOST, DB_NAME, DB_PASS, DB_PORT, DB_USER

config = context.config

section = config.config_ini_section
config.set_section_option(section, "DB_HOST", DB_HOST)
config.set_section_option(section, "DB_PORT", DB_PORT)
config.set_section_option(section, "DB_NAME", DB_NAME)
config.set_section_option(section, "DB_USER", DB_USER)
config.set_section_option(section, "DB_PASS", DB_PASS)


Пробовал различные варианты, на разных версиях библиотек, а разным расположением файлов config.py. У других разработчиков проблем нет.
Подскажите, кто встречался с такой проблемой и кто может подсказать решение проблемы?
  • Вопрос задан
  • 262 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы