Imagine que tenho dois pacotes foo
e bar
onde foo
está uma dependência de bar
. foo
já está instalado e agora desejo instalar bar
com pip
. É possível fazer isso sem atualizar foo
? Em particular, quero instalar a versão mais recente do bar
que está satisfeita com a versão instalada do foo
.
De pip help install
--upgrade-strategy <upgrade_strategy>
Determines how dependency upgrading should be handled
[default: only-if-needed]. "eager" - dependencies are
upgraded regardless of whether the currently installed
version satisfies the requirements of the upgraded
package(s). "only-if-needed" - are upgraded only when
they do not satisfy the requirements of the upgraded
package(s).
Pelo que vejo, isso cobre apenas os casos "sempre atualizar" e "apenas atualizar se necessário", mas não "nunca atualizar" como eu preciso.
pip install bar
(sem sinalizadores de atualização) deve fazer o que você deseja. pip deve escolher o instalado atualmente, a foo
menos bar
que diga explicitamente que a versão não é compatível. O novo resolvedor (2020) também é capaz de encontrar uma bar
versão que funcione com a foo
versão atualmente instalada , experimentando automaticamente as versões disponíveis uma a uma (chamado backtracking ) e instalando-a. O resolvedor 2020 é um recurso opcional no pip 20.2, disponível via --use-feature=2020-resolver
, e está programado para se tornar o padrão no 20.3 (lançamento planejado em outubro de 2020).
A ressalva, entretanto, é que o pacote Python não fornece uma maneira de descobrir conflitos de versão sem baixar o pacote (às vezes, até mesmo compilando a partir do código-fonte). 1 Isso seria um problema se o pacote bar
fosse caro para baixar (por exemplo tensorflow
) e / ou compilar (por exemplo, se você estiver instalando numpy
em plataformas menos suportadas como Alpine Linux). Nesse caso, a única opção seria especificar a versão manualmente, já que o pip não tem como saber qual versão do bar
pode ser usada, a menos que você diga explicitamente, sem tentar baixar várias versões dela.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras