Есть сервис, написанный на fastapi и имеет структуру указанную ниже:
Виртуальное окружение настроено и установлены все библиотеки, сервис запускается без проблем. Инициализация переменных окружения происходит в файле 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. У других разработчиков проблем нет.
Подскажите, кто встречался с такой проблемой и кто может подсказать решение проблемы?