mt-kart | --> src/data_kart | | | --> apis | | | | | --> __init__.py | | --> endpoints.py | | | --> models | | | | | --> __init__.py | | --> modelx.py | | | --> defaults.py | --> main.py --> tests | --> __init__.py | --> conftest.py | --> test_others.py En main.py obtengo module not found error cuando intento referirme
from defaults import func1
pero esto funciona
from .defaults import func1
Debería funcionar sin "." ¿Correcto?
2.
Desde endpoints.py , ¿cómo debo referirme a modelx.py ? mi anterior el desarrollador lo tenía como a continuación.
from data_kart.models.modelx import model1
Pero se queja cuando ejecuto algunas pruebas usando pytest del directorio mt-kart . Luego, lo siguiente funcionó para pytest . Pero me temo que puede dar error en algún escenario diferente.
from src.data_kart.models.modelx import model1
El proyecto utiliza OpenApI Code generators FastApi y OpenApI.
Editar-------------------
En conftest.py agregué src a sys.path y las rutas funcionan bien para mi problema 2 . sys.path.append(os.getcwd()+"/src")
En su lugar, podría agregar el directorio que incluye su paquete en PYTHONPATH , como se muestra aquí . Por ejemplo, si está en Windows, el directorio de su paquete debería verse así: C:/users/.../mt-kart/src . Después de agregar la ruta a la variable de entorno, asegúrese de iniciar una nueva terminal para almorzar pytest .
Al agregar C:/users/.../mt-kart/src en PYTHONPATH , significa que puede importar sus módulos de esta manera: from data_kart.models.modelx import model1 (como lo hizo su desarrollador anterior ) y from defaults import func1 debería funcionar como se esperaba. Cada vez que importe un módulo del paquete data_kart , apuntará al directorio proporcionado en la variable PYTHONPATH . Por lo tanto, no habría necesidad de agregar sys.path.append(... en la parte superior de cada archivo en su proyecto (o archivos de prueba) para importar módulos.