Eu tenho um projeto simples que depende do pyo3
. Atualmente/anteriormente, ele estava usando a versão 0.20.0, mas recentemente uma nova versão foi lançada, que é a versão 0.21.2. Estou procurando um comando Cargo que atualize a dependência, mesmo que isso signifique que eu tenha que voltar à fonte e corrigir quaisquer alterações importantes que foram introduzidas. No entanto, se eu executar:
> cargo update pyo3 --precise 0.21.2
Ou apenas igualmente:
cargo update pyo3
Então me deparei com o seguinte erro:
error: failed to select a version for the requirement `pyo3 = "^0.20.0"`
candidate versions found which didn't match: 0.21.2
location searched: crates.io index
required by package `eight-ball v0.1.0 (/home/harry/Documents/eight-ball)`
perhaps a crate was updated and forgotten to be re-vendored?
Aqui está o Cargo.toml
arquivo como estava antes da atualização:
[package]
name = "eight-ball"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
name = "eight_ball"
crate-type = ["cdylib"]
[dependencies]
itertools = "0.12.1"
pyo3 = "0.20.0"
Se eu acessar o Cargo.toml
arquivo e alterar manualmente a versão para pyo3
a versão mais recente e depois compilar, tudo funcionará bem. Não parece que o que estou procurando seja algo maluco, então sinto que estou usando o Cargo de maneira errada.
O que eu queria era apenas poder executar um comando Cargo para me atualizar para a versão 0.21.2, mas a escolha óbvia não funcionou e não consegui ver uma opção --force ou similar. Não sei por que pensei que eu estava tão decidido a permanecer na versão 0.20.0.
Como posso usar o cargo para atualizar as dependências do meu projeto sem precisar modificá-las Cargo.toml
diretamente?
Você pode instalar o cargo-edit :
Isso adicionará um
upgrade
comando ao Cargo. Você pode usá-lo para:verifique se há versões incompatíveis mais recentes:
atualize uma dependência para a versão incompatível mais recente:
atualize uma dependência para uma versão incompatível específica:
Como pano de fundo, o cargo-edit já existia
cargo add
ecargo rm
acabou sendo implementado diretamente no Cargo. Isso também pode eventualmente estar embutido, mas questões relacionadas indicam incerteza sobre como isso eventualmente funcionaria.