Estou instalando pacotes de requirements.txt
pip install -r requirements.txt
O requirements.txt
arquivo diz:
Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
lxml
é o único pacote que falha na instalação e isso leva a que tudo falhe (resultados esperados, conforme apontado por larsks nos comentários). No entanto, a lxml
falha após pip
ainda é executada e baixa o restante dos pacotes.
Pelo que entendi, o pip install -r requirements.txt
comando falhará se algum dos pacotes listados na requirements.txt
falha na instalação.
Existe algum argumento que eu possa passar ao executar pip install -r requirements.txt
para dizer para instalar o que puder e pular os pacotes que não podem ou sair assim que houver alguma falha?
requirements.txt
, é presumivelmente necessário , portanto, faz sentido quepip
falhe se o pacote não puder ser instalado. Se o código for executado de qualquer maneira sem esse pacote, dificilmente será um requisito. Podar aleatoriamente a remoção de pacotes com falharequirements.txt
parece causar problemas com dependências ausentes.pip install -r <some file>
fluxo de trabalho para padronizar a criação do ambiente apropriado.Respostas:
A execução de cada linha com
pip install
pode ser uma solução alternativa.Nota: o
-a
parâmetro não está disponível no MacOS, portanto, o gato antigo é mais portátil.fonte
cat requirements.txt | xargs -n 1 pip install
cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
remover qualquer coisa nos comentários e me livrar das linhas vazias.xargs
, há a-a
opção flag, que permitexargs
ler argumentos do arquivo, então isso pode ser feito comoxargs -n 1 -a requirements.txt pip install
. Impede UUOC e canalização excessivaFOR /F %k in (requirements.txt) DO pip install %k
-a
bandeira, considere< requirements.txt xargs -n 1 pip install
ou se você não gosta do redirecionamento na frentexargs -n 1 pip install < requirements.txt
,. :-)Esta solução lida com linhas vazias, linhas de espaço em branco, # linhas de comentário, espaço em branco e depois # linhas de comentário no seu requirements.txt.
Dica de chapéu para esta resposta para a magia sed.
fonte
pip freeze
vez decat requirements.txt
.Para Windows:
versão do pip> = 18
versão pip <18
fonte
A
xargs
solução funciona, mas pode ter problemas de portabilidade (BSD / GNU) e / ou ser complicada se você tiver comentários ou linhas em branco no seu arquivo de requisitos.Quanto ao caso de uso em que esse comportamento seria necessário, eu uso, por exemplo, dois arquivos de requisitos separados, um que lista apenas as dependências principais que precisam ser sempre instaladas e outro arquivo com dependências não essenciais em 90% dos casos não é necessário para a maioria dos casos de uso. Isso seria equivalente à
Recommends
seção de um pacote debian.Eu uso o seguinte script de shell (requer
sed
) para instalar dependências opcionais :fonte
Obrigado, Etienne Prothon, por estojos de janelas.
Mas, após a atualização para o pip 18, o pacote pip não expõe main ao público. Portanto, você pode precisar alterar um código como este.
fonte
Para Windows:
requirements.txt
arquivo nele..py
extensão, por exemplo,install_packages.py
python install_packages.py
Você pode adicionar outros parâmetros na função de instalação. Gostar:
main(['install'] + [str(package)] + ['--update'])
fonte