Estoy administrando dependencias en mi proyecto de Python a través de Poetry.
Ahora quiero ejecutar este proyecto en una máquina diferente a mi máquina de desarrollo. Para instalar dependencias, simplemente ejecuto este comando desde el directorio raíz:
$ poetry install
pero luego lanza los siguientes errores:
Updating dependencies Resolving dependencies... Writing lock file Package operations: 70 installs, 0 updates, 0 removals • Installing colorama (0.4.4) • Installing tzdata (2021.1) ValueError File \C:\Users\tteguayco\AppData\Local\pypoetry\Cache\artifacts\9e\b3\11\7d87ac44fdb2d557301f1f4086a37c080d1482a98751abe7cdbabbad26\colorama-0.4.4-py2.py3-none-any.whl does not exist at ~\AppData\Local\Programs\Python\Python39\lib\site-packages\poetry\core\packages\file_dependency.py:40 in __init__ 36│ except FileNotFoundError: 37│ raise ValueError("Directory {} does not exist".format(self._path)) 38│ 39│ if not self._full_path.exists(): → 40│ raise ValueError("File {} does not exist".format(self._path)) 41│ 42│ if self._full_path.is_dir(): 43│ raise ValueError("{} is a directory, expected a file".format(self._path)) 44│ ValueError File \C:\Users\tteguayco\AppData\Local\pypoetry\Cache\artifacts\45\2d\cb\6443e36999e7ab3926d5385dfac9ee9ea2a62f8111ff71abb6aff70674\tzdata-2021.1-py2.py3-none-any.whl does not exist at ~\AppData\Local\Programs\Python\Python39\lib\site-packages\poetry\core\packages\file_dependency.py:40 in __init__ 36│ except FileNotFoundError: 37│ raise ValueError("Directory {} does not exist".format(self._path)) 38│ 39│ if not self._full_path.exists(): → 40│ raise ValueError("File {} does not exist".format(self._path)) 41│ 42│ if self._full_path.is_dir(): 43│ raise ValueError("{} is a directory, expected a file".format(self._path)) 44│
Sería bueno saber qué son estos *.whl y cómo los utiliza Poetry.
Según https://github.com/python-poetry/poetry/issues/4163 , parece ser un problema aún pendiente de resolver.
Como solución alternativa, volcando las dependencias en un archivo requirements.txt
a través de la poetry
:
$ poetry export -f requirements.txt --output requirements.txt --without-hashes
y luego instalarlos a través de pip
, funcionó para mí:
$ pip install -r requirements.txt
Parece estar relacionado con el caché de poesía. Para mí, funciona según lo previsto si voy a User\user\AppData\Local\pypoetry
y elimino la carpeta de caché.
Específicamente, descubrí que eliminar la carpeta AppData\Local\pypoetry\Cache\artifacts
(estoy en Windows 10) funcionó para mí. virtualenvs para otros proyectos puede estar en AppData\Local\pypoetry\Cache\virtualenvs
, por lo que es posible que no desee eliminar la carpeta de caché raíz en AppData\Local\pypoetry\Cache
en su totalidad.
Entonces resulta que me faltaban las herramientas de compilación de Visualstudio como dice esta pregunta.
Lo descargué e instalé y todo funciona bien ahora.
Para mí, el error desapareció con el último lanzamiento de poesía >=1.1.12
Entonces, ejecutar poetry self update
debería solucionarlo.
Problema solucionado: https://github.com/python-poetry/poetry/pull/4549
Versión de poesía 1.1.12: https://github.com/python-poetry/poetry/releases/tag/1.1.12