Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

546
Vistas
python y docker para errores de importación de módulos, ¿cuál es posible para ambos?

Actualmente tengo una aplicación fastapi que estoy desarrollando y trato de hacer pruebas en 2 máquinas. 1 con docker y otro sin.

en este caso sin docker one, quería lanzar uvicorn desde la terminal como de costumbre

 uvicorn main:app --reload

es posible ejecutar sin problema, con mi main.py teniendo importaciones de otro archivo como este

 from util import search_card_price

con lo mismo, busqué docker e intenté compilarlo, me dará este error

 web_1 | File "./app/main.py", line 6, in <module> web_1 | from util import search_card_price web_1 | ModuleNotFoundError: No module named 'util'

¿Cuál es la mejor manera de hacer mi importación que funcione en ambos lugares?

mi aplicación actual es algo así como para la estructura,

 fastapi app main folder | ->app | -> main.py -> util.py -> config.py -> test.py

sé si usar algo como esto funcionará para docker

 from .util import search_card_price

pero con esta solución, no funciona en mi terminal local sin ventana acoplable. necesito saber como resolver ambos al mismo tiempo

aquí está mi dockerfile

 # Dockerfile # pull the official docker image FROM python:3.9.4-slim # set work directory WORKDIR /app # set env variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # install dependencies COPY requirements.txt . RUN pip install -r requirements.txt # copy project COPY . .

y la ventana acoplable componen

 version: '3.8' services: web: build: . command: bash -c 'uvicorn app.main:app --host 0.0.0.0' volumes: - .:/app expose: - 8000 labels: - "traefik.enable=true" - "traefik.http.routers.fastapi.rule=Host(`testing.localhost`)" traefik: image: traefik:v2.2 ports: - 80:80 - 8081:8080 volumes: - "./traefik.dev.toml:/etc/traefik/traefik.toml" - "/var/run/docker.sock:/var/run/docker.sock:ro"
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Si el Dockerfile está fuera del directorio de la app , está copiando el directorio también /app dentro de la ventana acoplable. Eso mueve util.py a /app/app/util.py dentro de la ventana acoplable. Puedes usar

 # copy project COPY .app /app/

para omitir la creación de otra app en /app .

Es posible que necesite eliminar app. del comando también.

 command: bash -c 'uvicorn main:app --host 0.0.0.0'
over 4 years ago · Santiago Trujillo Denunciar

0

en realidad resulta que puedo usar la importación relativa

 from .util import search_card_price

para la ejecución local también, la importación relativa funciona en la ventana acoplable pero no en mi host local aquí sin la ventana acoplable porque estoy usando esto en mi terminal para iniciar fastapi

 uvicorn main:app --reload

pero ahora, si retengo con importación relativa y uso este comando en su lugar

 uvicorn app.main:app --reload

agregando aplicación. enfrente de la principal y ejecute este comando en mi carpeta de proyecto raíz, todo funciona bien para mi local con una importación relativa al parecer.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda