django - example - ¿Cómo puedo actualizar paquetes específicos usando pip y un archivo de requisitos?
requirements.txt python example (7)
Estoy usando pip con un archivo de requisitos, en un virtualenv, para mis proyectos Django. Estoy intentando actualizar algunos paquetes, especialmente Django, y recibo un error sobre los conflictos de código fuente:
Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))
Eso es después de actualizar el número de versión de Django de 1.2.3 a 1.2.4 en mi archivo de requisitos. Estoy usando este comando para hacer la actualización:
pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>
No puedo encontrar ninguna bandera que active una nueva descarga total del paquete. Incluso intenté ejecutar un comando de desinstalación primero, luego la instalación, pero no los dados. Tal vez me estoy perdiendo algo?
De acuerdo con el ejemplo 3 de docs pip.
pip install --upgrade django
pero en base a mi experiencia, usar este método también actualizará cualquier paquete relacionado con él. ejemplo:
Supongamos que desea actualizar somepackage
que requiera django >= 1.2.4
usando este tipo de método, también actualizará somepackage
Y django
a la actualización más reciente. Solo para estar seguro hacer:
# assume you want to keep django 1.2.4
pip install --upgrade somepackage django==1.2.4
Al hacer esto se actualizará somepackage
y se somepackage
django a la versión 1.2.4
Ejecuté el siguiente comando y lo actualicé de 1.2.3 a 1.4.0
pip install Django --upgrade
Atajo para la actualización:
pip install Django -U
Nota : si el paquete que está actualizando tiene algún requisito, este comando además actualizará todos los requisitos a las últimas versiones disponibles. En las versiones recientes de pip, puede evitar este comportamiento especificando --upgrade-strategy only-if-needed
. Con ese indicador, las dependencias no se actualizarán a menos que las versiones instaladas de los paquetes dependientes ya no cumplan con los requisitos del paquete actualizado.
El comando de acceso directo para --upgrade
:
pip install Django --upgrade
Es:
pip install Django -U
No estoy seguro de que sea exactamente tu problema, pero en mi caso, no pude actualizar Django a 1.2.4. Siempre terminaba con la versión 1.2.3, así que desinstalé Django con:
<virtualenv>/bin/pip uninstall Django
Luego <virtualenv>/build/Django
directorio <virtualenv>/build/Django
y finalmente instalé la versión adecuada con:
<virtualenv>/bin/pip install Django
Espero que esto ayude.
Normalmente, pip se limpia después de sí mismo y elimina el contenido del directorio de compilación. La única vez que no lo hace es si:
-
--no-install
la--no-install
- Estás utilizando paquetes editables
- La instalación fue cancelada o fue interrumpida de otra manera.
En todos los demás casos, no debe tener un directorio de build
que esté obstruyendo su entorno.
Si actualiza un paquete, el anterior será desinstalado.
Una forma conveniente de hacer esto es usar este actualizador de pip-upgrader que también actualiza las versiones en su archivo Requirements.txt para los paquetes elegidos (o todos los paquetes).
Instalación
pip install pip-upgrader
Uso
Active su virtualenv (importante, porque también instalará las nuevas versiones de paquetes actualizados en virtualenv actual).
cd
en su directorio de proyecto, luego ejecute:
pip-upgrade
Uso avanzado
Si los requisitos se colocan en una ubicación no estándar, envíelos como argumentos:
pip-upgrade path/to/requirements.txt
Si ya sabe qué paquete desea actualizar, simplemente envíelos como argumentos:
pip-upgrade -p django -p celery -p dateutil
Si necesita actualizar a la versión preliminar o posterior a la publicación, agregue el argumento --prerelease
a su comando.
Revelación completa: escribí este paquete. Espero eso ayude.
Si solo desea actualizar un paquete específico llamado somepackage
, el comando que debe usar en las versiones recientes de pip es
pip install --upgrade --upgrade-strategy only-if-needed somepackage
Esto es muy útil cuando desarrolló una aplicación en django que actualmente solo funcionará con una versión específica de django (por ejemplo, Django = 1.9.x) y desea actualizar algún paquete dependiente con una característica de corrección de errores / nueva y el paquete actualizado depende en django (pero funciona con, digamos, cualquier versión de django después de 1.5). El comportamiento predeterminado de pip install --upgrade django-some-package
sería actualizar django a la última versión disponible que, de lo contrario, podría romper su aplicación, aunque con los paquetes dependientes --upgrade-strategy only-if-needed
ahora solo será actualizado según sea necesario.