Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

555
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda