J'utilise pip et virtualenv pour mon application python. Je voudrais passer à une nouvelle version de l'application sans toucher aux dépendances. Lorsque j'utilise pip install -U
, il essaie de mettre à niveau tous les packages, et même de désinstaller et de réinstaller la même version d'un package de dépendance lorsqu'aucune nouvelle version n'est disponible.
J'ai aussi essayé pip install -U --no-deps
mais cela semble équivalent à une installation régulière au lieu d'une mise à niveau. Y a-t-il une combinaison de drapeaux qui fera ce que je veux?
Je viens d'essayer mon projet virtualenv et pip install -U --no-deps mypackage
semble bien fonctionner. Il suffit de télécharger le mypackage et rien d'autre. Comment est votre configuration?
Aperçu:
pip install
(sans pour autant -U
)pip install --upgrade --upgrade-strategy only-if-needed
(par défaut dans les nouvelles versions)pip install --upgrade --upgrade-strategy eager
(par défaut dans les anciennes versions)UPDATE (grâce au commentaire de @ Jether): Si vous utilisez la dernière version de pip, la mise à jour des dépendances uniquement lorsque cela est nécessaire est désormais le comportement par défaut, et vous n'avez rien à faire de spécial! La réponse ci-dessous décrit les étapes pour les anciennes versions de pip (qui fonctionne également pour les versions plus récentes si vous voulez être portable).
Si vous voulez vraiment ne pas toucher aux dépendances, alors la voie à suivre est
pip install -U --no-deps mypackage
Mais je pense que ce que vous voudrez généralement, c'est de ne pas mettre à niveau les dépendances, sauf si cela est nécessaire. Dans ce cas, vous pouvez utiliser:
pip install --upgrade --upgrade-strategy only-if-needed mypackage
Cela ne met à jour les exigences que si le package requiert une version plus récente que celle installée.
Vous avez raison. J'ai pensé que lorsque j'ai ajouté --no-deps
il avait négligé de désinstaller la version existante. Mais je l'ai réessayé et je vois qu'il n'y a pas de problème:
$ pip install -U --no-deps myproj
Downloading/unpacking myproj
Downloading myproj-1.0-trunk.31072.tar.gz (43Kb): 43Kb downloaded
Running setup.py Egg_info for package myproj
Installing collected packages: myproj
Found existing installation: myproj 1.0-trunk.31053
Uninstalling myproj:
Successfully uninstalled myproj
Running setup.py install for myproj
Successfully installed myproj
Cleaning up...