Нет модуля с именем «src», даже если он существует.Python

Программы на Python
Anonymous
Нет модуля с именем «src», даже если он существует.

Сообщение Anonymous »

У меня есть проект репозитория, который занимает больше времени, чем я ожидал, чтобы настроить как базу данных, так и задачу (задание cron). Чтобы проверить соединение, сначала запустите сервер postgres, а затем создайте базу данных:

Код: Выделить всё

docker run --rm -d --name postgres -e POSTGRES_USER=myuser -e POSTGRES_PASSWORD=mypassword -p 5432:5432 postgres`
`docker exec -it postgres psql -U myuser -c 'CREATE DATABASE mydb;
Этот шаг уже частично выполняется вручную. Для этого я написал docker-compose, но все равно натыкаюсь на такие ошибки, как «Невозможно создать базу данных внутри транзакции». В любом случае, после выполнения приведенных выше команд мы сможем (или должны) запустить простой скрипт, например:

Код: Выделить всё

from sqlalchemy import create_engine
from sqlalchemy.sql import text

engine = create_engine("postgresql+psycopg2://myuser:mypassword@0.0.0.0:5432/mydb")

def app():
with engine.connect() as conn:
stmt = text("select * from pg_database")
print(conn.execute(stmt).fetchall())

if __name__ == "__main__":
app()
Моей первоначальной идеей было параметризовать тест в файле conftest.py. Однако, когда я импортирую модель из относительного пути src.database.models в другой тестовый файл (или, в данном случае, conftest), я не могу это сделать из-за журнала ошибок ModuleNotFoundError: Нет модуля с именем 'src'.

Код: Выделить всё

from sqlalchemy import create_engine
from sqlalchemy.sql import select
from sqlalchemy.orm import sessionmaker

from src.database.models import UserDB
from datetime import datetime

engine = create_engine("postgresql+psycopg2://myuser:mypassword@0.0.0.0:5432/mydb")

Session = sessionmaker(bind=engine)

def app():
with Session() as session:
session.add_all(
[
UserDB(
id=1,
username="John Smith",
email="john@mail.com",
password="mypwd1234!",
created_at=datetime.now(),
updated_at=datetime.now()
),
UserDB(
id=2,
username="Amy Johnson",
email="amy@mail.com",
password="mypwd1234?",
created_at=datetime.now(),
updated_at=datetime.now()
),
]
)
session.commit()

with engine.connect() as conn:
stmt = select(UserDB)
print(conn.execute(stmt).fetchall())

if __name__ == "__main__":
app()
Действительно неловко наткнуться на такие тривиальные ошибки, даже после поиска 2 дня подряд. Я могу сослаться и на другие ошибки, но если вы поможете мне в этом, это подтолкнет меня к дальнейшим исследованиям.
[1] https://github.com/brunolnetto/db -cron-докер

Подробнее здесь: https://stackoverflow.com/questions/785 ... -it-exists

Вернуться в «Python»