Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

542
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!