Estoy probando poesía en un proyecto existente. Usó pyenv y virtual env originalmente, así 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 la poesía, pero no he encontrado una manera de hacer esto. ¿Usted me podría ayudar?
Sé que puedo agregar todos los paquetes manualmente, pero esperaba un proceso más automatizado, porque hay muchos paquetes...
Aquí hay uno que funciona si tiene # comentarios (al comienzo de una línea o al final de una línea) en su archivo de requisitos:
poetry add $(sed -e 's/#.*//' -e '/^$/ d' < requirements.txt)Encontré que ninguna de estas respuestas era suficiente, así que creé una propia:
https://github.com/src-rr/python-estrofa
Es un bebé nuevo, por lo que las contribuciones son bienvenidas, pero hasta ahora es muy fácil de usar:
setup.py y obtiene información del proyecto-r ./special-requirements.txt ) si está incluido en un archivo de requisitos.Para PowerShell:
$reqs = @(cat requirements.txt) for($i = 0; $i -lt $reqs.length; $i++){poetry add $reqs[i]}Tenga en cuenta que esto no ignorará los comentarios ni nada más en el archivo de requisitos. Esto es estrictamente tomarlo como texto sin procesar, por lo que espera que cada línea sea un paquete.
Un trazador de líneas:
cat requirements.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 echo poetry add
poetry no apoya esto directamente. Pero si tiene una lista hecha a mano de los paquetes requeridos (en el mejor de los casos sin números de versión), que solo contienen las dependencias principales y no las dependencias de una dependencia, podría hacer esto:
$ cat requirements.txt | xargs poetry addEl mejor método que he encontrado es este:
$ for item in $(cat requirements.txt); do poetry add "${item}"; doneNo tengo suficiente reputación para comentar, pero una mejora de la respuesta de @Liang es omitir el eco y llamar poesía en sí.
cat requirements.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 poetry add
En mi caso, esto agregó con éxito paquetes al archivo pyproject.toml .
Como 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 (tenga en cuenta la omisión de xargs -n 1 poetry add agregada para demostración) generará lo siguiente:
pytz python-slugify Pillow # NOTE: this will install the latest package - you may or may not want this. Agregar dependencias de desarrollo es tan simple como agregar el argumento -D o --dev .
# dev dependancies example cat requirements-dev.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs -n 1 poetry add -DPor último, si sus requisitos de desarrollo se instalan desde un archivo de requisitos principal, por ejemplo:
-r base.txt package1 package2 Luego, esto generará errores cuando se ejecute la poesía, sin embargo, continuará más allá de la línea -r base.txt e instalará los paquetes como se esperaba.
Probado en Linux manjaro con poesía instalada como se indica aquí .
Aprecio que esto pueda ser un poco tarde, pero puedes usar
poetry add $( cat requirements.txt )Simplemente use los requisitos simples.txt y filtre los números de versión con awk:
awk -F '==' '{print $1}' requirements.txt | xargs -n1 poetry add -F especifica un filtro o punto de división. $1 es el primer argumento de la división. El archivo de entrada viene como último argumento. Luego, puede canalizarlo a la poetry add usando xargs -n 1 para llamar a la poetry add con cada línea consecutivamente y no con una cadena separada por espacios a la vez. Si desea consumir todas las entradas a la vez, simplemente omita -n 1 . También asegúrese de que ya esté presente un ambiente de poesía.
Para consumir solo los requisitos.txt, omita el filtro y use
awk '{print $1}' requirements.txt | xargs -n1 poetry add Pero otras herramientas como cat también están bien para ese caso.
Esto es al revés de la poesía.
poetry export -f requirements.txt --without-hashes > requirements.txt