Como faço para atualizar todos os meus pacotes Python do arquivo requirements.txt usando o comando pip?
tentei com o comando abaixo
$ pip install --upgrade -r requirements.txt
Desde então, os pacotes python são sufixados com o número da versão ( Django==1.5.1
), eles não parecem atualizar. Existe alguma abordagem melhor do que editar manualmente o arquivo requirements.txt?
EDITAR
Como Andy mencionou em sua resposta, os pacotes são fixados em uma versão específica, portanto, não é possível atualizar os pacotes por meio do comando pip.
Mas podemos conseguir isso pip-tools
usando o seguinte comando.
$ pip-review --auto
isso irá atualizar automaticamente todos os pacotes de requirements.txt (certifique-se de instalar pip-tools
usando o comando pip install).
python
pip
packages
requirements.txt
Abhiomkar
fonte
fonte
pip-compile -U requirements.txt
.Respostas:
Não. Seu arquivo de requisitos foi fixado em versões específicas. Se seus requisitos forem definidos para essa versão, você não deve tentar atualizar além dessas versões. Se você precisar fazer upgrade, deverá alternar para versões não fixadas em seu arquivo de requisitos.
Exemplo:
Isso atualizaria o lxml para qualquer versão mais recente que 2.2.0
Isso atualizaria o lxml para a versão mais recente entre 2.2.0 e 2.3.0.
fonte
sed 's/==/>=/g' requirements.txt > TMP_FILE && mv TMP_FILE requirements.txt
substituirá todos==
por>=
podes tentar:
Você também pode ignorar o pacote instalado e instalar o novo:
fonte
-I
e--ignore-installed
são os mesmos sinalizadores e, claro, não é válido ter um,
lá. Desta forma, não ocorrerão downgrades durante a instalação e após a conclusão da instalação dos requisitos, pode-se atualizar os pacotes instalados usandopip-review --auto
.Eu já respondi a essa pergunta aqui . Esta é minha solução:
Como não havia uma maneira fácil de atualizar pacote por pacote e atualizar o arquivo requirements.txt, escrevi este pip-upgradeer que também atualiza as versões em seu
requirements.txt
arquivo para os pacotes escolhidos (ou todos os pacotes).Instalação
Uso
Ative seu virtualenv (importante, porque ele também instalará as novas versões de pacotes atualizados no virtualenv atual).
cd
no diretório do projeto e, em seguida, execute:Uso avançado
Se os requisitos forem colocados em um local não padrão, envie-os como argumentos:
Se você já sabe qual pacote deseja atualizar, basta enviá-los como argumentos:
Se você precisar atualizar para a versão de pré-lançamento / pós-lançamento, adicione um
--prerelease
argumento ao seu comando.Divulgação completa: eu escrevi este pacote.
fonte
Eu sugiro congelar todas as suas dependências para ter compilações previsíveis .
Ao fazer isso, você pode atualizar todas as dependências de uma vez, desta forma:
Tendo feito o exposto, testar seu projeto com o novo conjunto de pacotes e, eventualmente, comprometer o
requirements.txt
arquivo para o repositório.fonte
Eu apenas tive que fazer o mesmo ... usei esta pequena linha para fazer o trabalho:
qual:
packages=$(cat requirements.txt | sed 's/==.*//g')
cria uma lista dos nomes dos pacotes atuais em requirements.txt (removendo a versão).echo $packages | xargs pip3 install -U
em seguida, passa todos os pacotes como argumentos para o pip3 atualizar.freeze=$(pip3 freeze);
Obtém todas as versões atuais do pacote no formato exigido para requirements.txtfor p in $(echo $packages)
então itera através dos nomes dos pacotesecho $freeze | grep -E "^${p}==" >> requirements.new
obtém a linha de versão do pacote da saída de congelamento do pip que corresponde ao pacote e grava em novo requirements.txtIsso tem o benefício adicional de preservar a ordem do requirements.txt original. :)
Espero que isto ajude!
fonte
Como não poderia fazer isso usando o bash, escrevi um módulo Python para criar um novo arquivo de requisitos sem versões e usá-lo:
Em seguida, instale as libs do novo arquivo
pip install -U -r requirements-prod-no-version.pip
Finalmente congele as versões para o arquivo original
pip freeze > requirements-prod.pip
fonte
Outra solução é usar o pacote de requisitos de atualização
E então execute:
Ele atualizará todos os pacotes que não estão em suas versões mais recentes e também criará um requirements.txt atualizado no final.
fonte
1) Para atualizar os arquivos instalados pelo pip a partir de reqs.txt, adicione o > = no lugar de ==. Isso dirá ao pip para instalar o lib maior ou igual à versão que você está solicitando, aqui instalando a versão mais atualizada da biblioteca solicitada
1.a) ** Minha resposta para o tópico ** Adicionando
py -m pip install -r
reqs.txt para uma reinicialização diária ... ou algo dessa natureza, você pode atualizar suas bibliotecas instaladas. Resumido por Andy Perfeitamente-Minha razão para entrar neste tópico foi para encontrar informações sobre como atualizar o pip base do env virtual (geralmente 10.0.03 para mim ??)
na esperança de satisfazer um problema do qual consegui derivar uma de duas soluções
Graças a Andy, atendi a necessidade B
Adicionando pip > = versão solicitada em reqs.txt
após a instanciação do novo ambiente virtual || re-instanciação do Venv anterior
py -m venv devenv
configurar um novo dev env
evenv\scripts\activate.bat
para ativar dev env
python -m pip install -r requirenments.txt
instalar libs base
produção de safras
Desculpe pelo despejo de cérebro, espero que isso ajude alguém :)
🤳 Austin 👨🎤🚀🥊
fonte
A segunda resposta é a mais útil, mas o que eu queria fazer é bloquear alguns pacotes enquanto tenho outros na versão mais recente (por exemplo, youtube-dl).
Um exemplo
requirements.txt
ficaria assim (~ significa compatível):Então, no terminal, use o comando
pip install --upgrade -r requirements.txt
Isso garante que o Pillow permanecerá em 6.2.2, as solicitações serão atualizadas para a versão 2.22.x mais recente (se disponível) e a versão mais recente do youtube-dl será instalada, se ainda não estiver instalada.
fonte
Acho que a solução mais simples é criar o requirements.txt com:
fonte
Se você instalar qualquer coisa em seu projeto django e após a instalação quiser atualizar seu arquivo de requisitos, este comando pode atualizar seu arquivo required.txt pip freeze> requirements.txt
se o seu arquivo de requisitos não existir em seu projeto, você pode usar este comando para criar novo arquivo de requisitos.txt pip freeze> requisitos.txt
fonte
Eu edito o requirements.txt conforme abaixo e executo $ sh ./requirements.txt
fonte