Não foi possível encontrar uma versão que atenda ao requisito <pacote>

139

Estou instalando vários pacotes Python no Ubuntu 12.04 usando o seguinte requirements.txtarquivo:

numpy>=1.8.2,<2.0.0
matplotlib>=1.3.1,<2.0.0
scipy>=0.14.0,<1.0.0
astroML>=0.2,<1.0
scikit-learn>=0.14.1,<1.0.0
rpy2>=2.4.3,<3.0.0

e estes dois comandos:

$ pip install --download=/tmp -r requirements.txt
$ pip install --user --no-index --find-links=/tmp -r requirements.txt

(o primeiro baixa os pacotes e o segundo os instala).

O processo é frequentemente interrompido com o erro:

  Could not find a version that satisfies the requirement <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) (from versions: )
No matching distribution found for <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2))

com o qual eu corrijo manualmente:

pip install --user <package>

e, em seguida, execute o segundo pip installcomando novamente.

Mas isso só funciona para esse pacote específico. Quando executo o segundo pip installcomando novamente, o processo está parado agora, reclamando de outro pacote necessário e preciso repetir o processo novamente, ou seja: instale o novo pacote necessário manualmente (com o comando acima) e execute o segundo pip installcomando.

Até agora eu tive que instalar manualmente six, pytz, nose, e agora ele está reclamando sobre a necessidade mock.

Existe uma maneira de dizer pippara instalar automaticamente todas as dependências necessárias para que eu não precise fazer isso manualmente, uma por uma?

Adicionar : isso acontece apenas no Ubuntu 12.04 BTW. No Ubuntu 14.04, os pip installcomandos aplicados no requirements.txtarquivo funcionam sem problemas.

Gabriel
fonte
1
Às vezes, seu projeto Django pode depender de pacotes locais de preparação. Verifique novamente se você tem estes instalados!
James111
Eu tive o mesmo problema, com o 'python -m pip install flask' eu consegui instalá-lo
Freelancer

Respostas:

47

Essa abordagem (com todas as dependências em um diretório e não baixando de um índice) funciona apenas quando o diretório contém todos os pacotes. O diretório deve, portanto, conter todas as dependências, mas também todos os pacotes dos quais essas dependências dependem (por exemplo six, pytzetc).

Portanto, você deve incluí-las manualmente requirements.txt(para que a primeira etapa faça o download explicitamente) ou instalar todos os pacotes usando o PyPI e, em seguida, pip freeze > requirements.txtarmazenar a lista de todos os pacotes necessários.

Simeon Visser
fonte
Portanto, a única maneira de descobrir quais são todos os requisitos é para freezeos pacotes instalados em uma configuração de trabalho e adicionar tudo ao requirements.txtarquivo?
Gabriel
2
@ Gabriel: atualmente sim, muitos pacotes Python são instalados executando um setup.pyarquivo que contém as dependências de que precisam. Isso deve melhorar quando o pacote Python se tornar arquivos wheel ( pythonwheels.com ), que permite reunir uma lista de todos os pacotes necessários sem executar código arbitrário nos setup.pyarquivos.
Simeon Visser
1
Obrigado pela explicação Simeon. Mais uma coisa, se você não se importa: por que isso não acontece no Ubuntu 14.04, mas no Ubuntu 12.04?
Gabriel
4
@ Gabriel: Não tenho certeza - na minha experiência pipsempre aborta quando não consigo encontrar um pacote para instalar. Dito isto, pipestá sendo desenvolvido ativamente para que você possa ter uma versão com a qual não trabalhei.
Simeon Visser
@SimeonVisser, "[wheels] permite que você reúna uma lista de todos os pacotes necessários sem executar código arbitrário", interessante, compartilhe sua mente como realmente fazer isso (até agora)?
Sschuberth 02/05/19
39

Eu tinha instalado o python3, mas meu python em / usr / bin / python ainda era a versão 2.7 antiga

Isso funcionou ( <pkg>foi pyserialno meu caso):

python3 -m pip install <pkg>
maw
fonte
1
isso acontece quando em setuptools existe python_requires='>=3.0'como requisito
Juan-Kabbali em 29/04
11

Após 2 horas de pesquisa, encontrei uma maneira de corrigi-lo com apenas uma linha de comando. Você precisa conhecer a versão do pacote (basta pesquisar na versão PACKAGE).

Comando:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION
Jagd_Panzer_E100
fonte
9

O comando abaixo funcionou para mim -

python -m pip install flask
Trabalhador autonomo
fonte
4

Tente instalar o balão através do PowerShell usando o seguinte comando.

pip install --isolated Flask

Isso permitirá que a instalação evite variáveis ​​de ambiente e configuração do usuário.

user3782287
fonte
3

Nem sempre, mas em alguns casos o pacote já existe. Por exemplo - getpass. Não está listado por "lista de pip", mas pode ser importado e usado:

insira a descrição da imagem aqui

Se eu tentar instalar o getpass pelo pip, recebo o seguinte erro: "Não foi possível encontrar uma versão que atenda ao requisito getpass"

svinec
fonte
1

Se você está enfrentando esse problema no local de trabalho. Esta pode ser a solução para você.

pip install -U <package_name> --user --proxy=<your proxy>
pk786
fonte
-6

Use o prompt de comando e selecione Executar como administrador.

Atualize a versão do pip

Para atualizar o PIP, digite este comando e pressione Enter: -

python.exe -m pip install --upgrade pip

Volte para o caminho python C: \ Usuários \ Jack \ AppData \ Local \ Programas \ Python \ Python37 \ Scripts

Digite notebook jupyter

Você será redirecionado para http: // localhost: 8888 / undefined / tree - Página Inicial do Jupyter

Espero que ajude !!!!!!!!!!!

arup.dutta22
fonte
2
O que o jupyter tem a ver com isso?
Bzazz 10/02/19
como a atualização do pip resolve as dependências? Requer dependências no diretório de chamada.
Rizwan Javid
-7

pode ajudar

roda de instalação do sudo pip == 0.29.0

Trisha Chetani
fonte
4
Desculpe .. eu não leio chinês ou outro idioma asiático .. O link de referência pode quebrar no futuro ... poste aqui o essencial. Como postou sua resposta de baixa qualidade sem contexto.
ZF007
1
O link de referência é em japonês ... por favor considere compartilhá ligações em Inglês
javidazac
6
O código é compreensível para todos os desenvolvedores e a quantidade de japonês é mínima e pouco mais do que os títulos que introduzem o código a seguir (traduza-o se for muito desafiador para você, mas você realmente não precisa fazer isso para entender o que está acontecendo). Não deve haver um problema com idiomas diferentes do inglês, desde que os exemplos de código sejam claros e não dependam completamente do idioma estrangeiro em uso.
Rg88
6
@ rg88 Isso seria bom para um comentário (talvez com uma ressalva), mas uma resposta no Stack Overflow deve ser independente e convincente.
tripleee