Pregunta de entrevista para Desarrollador Python

¿Cómo montas las dependencias y los entornos en un proyecto Python nuevo?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Declara todo en pyproject.toml y gestiona el entorno con uv, que crea el entorno virtual, resuelve las dependencias y escribe un fichero de lock rápido. Mantén las dependencias directas con rangos amplios en la tabla del proyecto, versiona el fichero de lock para instalaciones reproducibles, y separa las herramientas de desarrollo en grupos de dependencias para que las imágenes de producción no lleven pytest ni ruff.

Por qué lo preguntan los entrevistadores

El empaquetado es donde Python ha dolido históricamente, así que el entrevistador comprueba si estás al día o si sigues copiando un flujo con ficheros requirements de hace una década. Quiere la distinción entre dependencias declaradas y fichero de lock, que sepas que pyproject.toml es el sitio estándar para la configuración, y pruebas de que has pensado en builds reproducibles en CI y en Docker.

Cómo estructurar tu respuesta

  • Nombra pyproject.toml como única fuente de verdad.
  • Separa los rangos declarados del fichero de lock.
  • Divide los grupos de dependencias de ejecución y de desarrollo.
  • Enlázalo con CI y con los builds de contenedores.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Todo vive en pyproject.toml: las dependencias, la configuración de ruff, mypy y pytest, y los metadatos de build. Uso uv para llevarlo, porque crea el venv, resuelve e instala lo bastante rápido como para que un entorno de CI en frío sean segundos y no minutos, y además gestiona la versión del intérprete, así que nadie discute sobre qué Python está en el path. Las dependencias directas llevan restricciones razonablemente amplias, luego uv lock produce el conjunto exacto resuelto y ese fichero de lock se versiona. CI y Docker instalan desde el lock congelado, así que lo que corre en producción es bit a bit lo que probé. Las herramientas de desarrollo van en un grupo aparte, lo que mantiene la imagen de ejecución más pequeña y hace que un linter comprometido no esté dentro del contenedor de producción. En Docker copio primero el lock y el manifiesto e instalo antes de copiar el código, para que la caché de capas funcione de verdad. Migrar un proyecto antiguo desde pip y ficheros requirements me llevó quizá una tarde y recortó varios minutos del paso de preparación de nuestro CI.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿De qué te protege el fichero de lock?
  • ¿Cómo gestionas una dependencia que no tiene wheel?
  • ¿Cómo manejas varias versiones de Python en local?

Más preguntas para Desarrollador Python

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot