¿Cómo actualizo todos mis paquetes de Python desde el archivo requirements.txt usando el comando pip?
intentado con el siguiente comando
$ pip install --upgrade -r requirements.txt
Dado que los paquetes de Python tienen el sufijo del número de versión ( Django==1.5.1
), no parecen actualizarse. ¿Hay algún método mejor que editar manualmente el archivo requirements.txt?
EDITAR
Como Andy mencionó en su respuesta, los paquetes están anclados a una versión específica, por lo que no es posible actualizar los paquetes a través del comando pip.
Pero podemos lograr esto pip-tools
usando el siguiente comando.
$ pip-review --auto
esto actualizará automáticamente todos los paquetes de requirements.txt (asegúrese de instalar pip-tools
usando el comando pip install).
python
pip
packages
requirements.txt
abhiomkar
fuente
fuente
pip-compile -U requirements.txt
.Respuestas:
No. Su archivo de requisitos se ha anclado a versiones específicas. Si sus requisitos están configurados para esa versión, no debería intentar actualizar más allá de esas versiones. Si necesita actualizar, debe cambiar a versiones no ancladas en su archivo de requisitos.
Ejemplo:
Esto actualizaría lxml a cualquier versión posterior a la 2.2.0
Esto actualizaría lxml a la versión más reciente entre 2.2.0 y 2.3.0.
fuente
sed 's/==/>=/g' requirements.txt > TMP_FILE && mv TMP_FILE requirements.txt
reemplazará a todos==
con>=
puedes probar:
También puede ignorar el paquete instalado e instalar el nuevo:
fuente
-I
y--ignore-installed
son las mismas banderas y, por supuesto, no es válido tener una,
allí. De esta manera, no se producirán degradaciones durante la instalación y una vez completada la instalación de los requisitos, se pueden actualizar los paquetes instalados mediantepip-review --auto
.Ya respondí esta pregunta aquí . Esta es mi solución:
Debido a que no había una manera fácil de actualizar paquete por paquete y actualizar el archivo requirements.txt, escribí este pip-upgradeder que también actualiza las versiones en su
requirements.txt
archivo para los paquetes elegidos (o todos los paquetes).Instalación
Uso
Active su virtualenv (importante, porque también instalará las nuevas versiones de paquetes actualizados en virtualenv actual).
cd
en el directorio de su proyecto, luego ejecute:Uso avanzado
Si los requisitos se colocan en una ubicación no estándar, envíelos como argumentos:
Si ya sabe qué paquete desea actualizar, simplemente envíelos como argumentos:
Si necesita actualizar a la versión preliminar / posterior, agregue un
--prerelease
argumento a su comando.Divulgación completa: escribí este paquete.
fuente
Sugiero congelar todas sus dependencias para tener compilaciones predecibles .
Al hacer eso, puede actualizar todas las dependencias a la vez de esta manera:
Una vez hecho lo anterior, pruebe su proyecto con el nuevo conjunto de paquetes y, finalmente, envíe el
requirements.txt
archivo al repositorio.fuente
Solo tuve que hacer lo mismo ... usé este pequeño resumen para hacer el trabajo:
cual:
packages=$(cat requirements.txt | sed 's/==.*//g')
crea una lista de los nombres de los paquetes actuales en requirements.txt (eliminando la versión).echo $packages | xargs pip3 install -U
luego pasa todos los paquetes como argumentos a pip3 para actualizar.freeze=$(pip3 freeze);
Obtiene todas las versiones actuales del paquete en el formato requerido para requirements.txtfor p in $(echo $packages)
luego recorre los nombres de los paquetesecho $freeze | grep -E "^${p}==" >> requirements.new
obtiene la línea de versión del paquete de la salida de pip freeze que coincide con el paquete y escribe en los nuevos requisitos.txtEsto tiene el beneficio adicional de preservar el orden de los requisitos originales.txt. :)
¡Espero que esto ayude!
fuente
Como no podía hacer eso usando bash, escribí un módulo de Python para crear un nuevo archivo de requisitos sin versiones y lo usé:
Luego instale las librerías desde el nuevo archivo
pip install -U -r requirements-prod-no-version.pip
Finalmente congele las versiones al archivo original
pip freeze > requirements-prod.pip
fuente
Otra solución es utilizar el paquete de requisitos de actualización
Y luego ejecuta:
Actualizará todos los paquetes que no estén en sus últimas versiones y también creará un requirements.txt actualizado al final.
fuente
1) Para actualizar los archivos instalados de pip desde reqs.txt agregue el > = en reemplazo de == esto le dirá a pip que instale una lib mayor o igual a la versión que está solicitando, aquí instalando la versión más actualizada de la biblioteca solicitada
1.a) ** Mi respuesta para el hilo ** Al agregar
py -m pip install -r
reqs.txt a un reinicio diario ... o algo por el estilo, puede actualizar sus bibliotecas instaladas. Resumido por Andy perfectamente-Mi razón para ingresar a este hilo fue encontrar información sobre cómo actualizar el pip base del entorno virtual (generalmente 10.0.03 para mí?)
con la esperanza de satisfacer un problema del cual pude derivar una de dos soluciones
Gracias a Andy he satisfecho la necesidad B
Añadiendo pip > = versión solicitada en reqs.txt
al crear una instancia del nuevo entorno virtual || re-instanciación de Venv anterior
py -m venv devenv
para configurar un nuevo dev env
evenv\scripts\activate.bat
para activar dev env
python -m pip install -r requirenments.txt
para instalar librerías base
salida de yeilds
Perdón por el Brain Dump, espero que esto ayude a alguien :)
🤳 Austin 👨🎤🚀🥊
fuente
La segunda respuesta es la más útil, pero lo que quería hacer era bloquear algunos paquetes y tener otros en la última versión (por ejemplo, youtube-dl).
Un ejemplo
requirements.txt
se vería así (~ significa compatible):Luego, en la terminal, usa el comando
pip install --upgrade -r requirements.txt
Esto asegura que Pillow se mantendrá en 6.2.2, las solicitudes se actualizarán a la última 2.22.x (si está disponible) y se instalará la última versión de youtube-dl si aún no lo está.
fuente
Supongo que la solución más simple es crear requirements.txt con:
fuente
Si instala algo en su proyecto django y después de la instalación desea actualizar su archivo de requisitos, este comando puede actualizar su archivo requisito.txt pip freeze> requirements.txt
si su archivo de requisitos no existe en su proyecto, puede usar este comando para crear un nuevo archivo require.txt pip freeze> requirements.txt
fuente
Edito requirements.txt como se muestra a continuación y ejecuto $ sh ./requirements.txt
fuente