Por qué aparecen errores de dependencias en Python 3.15
Al cambiar a Python 3.15, algunos proyectos pueden comenzar a mostrar errores de dependencias difíciles de interpretar. Una posible causa es la presencia de un archivo uv.lock antiguo que mantiene fijada una versión de una dependencia incompatible con la nueva versión de Python.
Este archivo puede conservar versiones de paquetes que todavía no disponen de una distribución binaria compatible, conocida como wheel, para Python 3.15.
En estos casos, borrar uv.lock y ejecutar nuevamente el comando que produjo el error suele solucionar el problema.
Un ejemplo: watchfiles y PyO3
Uno de los errores que puede aparecer afecta a watchfiles==1.1.1.
Al intentar compilar esta dependencia con Python 3.15, se produce un fallo porque la versión de Python configurada supera la máxima admitida por PyO3.
En este caso, las versiones implicadas son:
- Python 3.15: versión configurada en el proyecto.
- watchfiles 1.1.1: dependencia cuya compilación falla.
- PyO3: admite como máximo Python 3.14 en el caso descrito.
El problema puede producirse cuando un archivo uv.lock anterior mantiene fijada una versión de watchfiles que todavía no dispone de una wheel compatible con Python 3.15.
Cómo solucionar el problema de uv.lock
La solución consiste en eliminar el archivo de bloqueo antiguo y repetir el comando que provocó el error.
- Eliminar el archivo uv.lock. Borra el archivo uv.lock que quedó en el proyecto y que puede estar fijando versiones incompatibles de las dependencias.
- Volver a ejecutar el comando. Repite el comando que produjo el error. Por ejemplo:
uv run pytest
Este procedimiento suele resolver los errores provocados por un archivo uv.lock antiguo al trabajar con Python 3.15.
En contexto
Los proyectos de bibliotecas de Python no suelen incluir un archivo uv.lock, ya que fijar versiones de dependencias para todos los proyectos que utilicen una biblioteca puede resultar inapropiado.
Sin embargo, al ejecutar comandos como uv run pytest, pueden generarse archivos uv.lock que permanecen en el directorio del proyecto.
Estos archivos suelen estar incluidos en .gitignore, por lo que no se confirman en los repositorios de Git.
Aunque no formen parte del repositorio, pueden permanecer localmente y conservar versiones antiguas de dependencias, provocando errores al cambiar a Python 3.15.




