173 votos

¿Cómo importar un requirements.txt existente en un proyecto de Poetry?

Estoy probando Poetry en un proyecto existente. Originalmente se usaba pyenv y entornos virtuales, por lo que tengo un archivo requirements.txt con las dependencias del proyecto.

Quiero importar el archivo requirements.txt usando Poetry, para poder cargar las dependencias por primera vez. He revisado la documentación de poetry, pero no he encontrado una forma de hacerlo. ¿Existe alguna manera de hacerlo?

Sé que podría agregar todos los paquetes manualmente, pero esperaba un proceso más automatizado, ya que hay muchos paquetes.

232voto

finswimmer Puntos 927

poetry no admite esto directamente. Pero si tienes una lista hecha a mano de paquetes requeridos (a ser posible sin números de versión), que solo contienen las dependencias principales y no las dependencias de una dependencia, podrías hacer esto:

$ cat requirements.txt | xargs poetry add

163voto

James Rocker Puntos 11
poetry add $(cat requirements.txt)

37voto

Daniel Michaels Puntos 51

No tengo suficiente reputación para comentar, pero una mejora a la respuesta de @Liang es omitir el echo y llamar directamente a poetry.

cat requirements.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 poetry add

En mi caso, esto añadió correctamente los paquetes al archivo pyproject.toml.

Para referencia este es un fragmento de mi archivo requirements.txt:

pytz==2020.1  # https://github.com/stub42/pytz
python-slugify==4.0.1  # https://github.com/un33k/python-slugify
Pillow==7.2.0  # https://github.com/python-pillow/Pillow

y al llamar cat requirements.txt | grep -E '^[^# ]' | cut -d= -f1 (nota la omisión de xargs -n 1 poetry add para la demostración) imprimirá lo siguiente:

pytz
python-slugify
Pillow
# NOTA: esto instalará el paquete más reciente - puede que sí o que no lo desees.

Agregar dependencias de desarrollo es tan simple como agregar el argumento -D o --dev.

# Ejemplo de dependencias de desarrollo
cat requirements-dev.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 poetry add -D

Por último, si tus requerimientos de desarrollo se instalan desde un archivo de requerimientos principal, por ejemplo:

-r base.txt

paquete1
paquete2

Entonces esto generará errores cuando poetry se ejecute, sin embargo, continuará más allá de la línea -r base.txt e instalará los paquetes como se espera.

Probado en Linux manjaro con poetry instalado como se indica aquí.

11voto

Aelius Puntos 178

Una sola línea para usuarios de Windows PowerShell:

    @(cat requirements.txt) | %{&poetry add $_}

Para obtener más información sobre cómo pasar argumentos con PowerShell, consulte esta útil respuesta.

8voto

Teddy C Puntos 129

Hice una herramienta poetry-add-requirements.txt solo para esto. Código

Instálalo con pipx install poetry-add-requirements.txt,

y luego ejecuta poeareq.

Uso

Ejecuta poetry-add-requirements.txt, opcionalmente especifica tus archivos requirements.txt y --dev para dependencias de desarrollo.

poeareq se brinda como un alias de poetry-add-requirements.txt.

$ poeareq --help

uso: poeareq [-h] [-D] [archivo(s) requirements.txt ...]

Agrega las dependencias especificadas en requirements.txt a tu proyecto de Poetry

argumentos posicionales:
  archivo(s) requirements.txt
                        Ruta(s) de tu(s) archivo(s) requirements.txt (predeterminado: requirements.txt)

opciones:
  -h, --help            muestra este mensaje de ayuda y termina
  -D, --dev             Agregar a dependencias de desarrollo (predeterminado: False)

Características

  • Auto detecta el conjunto de caracteres del archivo(s) requirements.txt y alimenta las especificaciones normalizadas de dependencias a poetry.
  • Detiene en el primer error de poetry add.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X