No se pudo encontrar una versión que satisfaga el requisito <paquete>

139

Estoy instalando varios paquetes de Python en Ubuntu 12.04 usando el siguiente requirements.txtarchivo:

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

y estos dos comandos:

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

(el primero descarga los paquetes y el segundo los instala).

El proceso se detiene con frecuencia con el error:

  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))

que arreglo manualmente con:

pip install --user <package>

y luego ejecute el segundo pip installcomando nuevamente.

Pero eso solo funciona para ese paquete en particular. Cuando ejecuto el segundo pip installcomando nuevamente, el proceso se detiene ahora quejándose de otro paquete requerido y necesito repetir el proceso nuevamente, es decir: instalar el nuevo paquete requerido manualmente (con el comando anterior) y luego ejecutar el segundo pip installcomando.

Hasta ahora he tenido que instalar manualmente six, pytz, nose, y ahora se queja de necesidad mock.

¿Hay alguna manera de decirle pipque instale automáticamente todas las dependencias necesarias para que no tenga que hacerlo manualmente una por una?

Agregar : Esto solo ocurre en Ubuntu 12.04 BTW. En Ubuntu 14.04, los pip installcomandos aplicados en el requirements.txtarchivo funcionan sin problemas.

Gabriel
fuente
1
A veces, su proyecto Django puede depender de paquetes de cerveza locales. ¡Verifique que tenga estos instalados!
James111
tuve el mismo problema, con 'python -m pip install flask' pude instalarlo
Freelancer

Respuestas:

47

Este enfoque (que tiene todas las dependencias en un directorio y no se descarga desde un índice) solo funciona cuando el directorio contiene todos los paquetes. Por lo tanto, el directorio debe contener todas las dependencias, pero también todos los paquetes de los que dependen esas dependencias (p. Ej. six, pytzEtc.).

Por lo tanto, debe incluirlos manualmente requirements.txt(para que el primer paso los descargue explícitamente) o debe instalar todos los paquetes usando PyPI y luego pip freeze > requirements.txtalmacenar la lista de todos los paquetes necesarios.

Simeon Visser
fuente
Entonces, ¿la única forma de averiguar cuáles son todos los requisitos es para freezelos paquetes instalados en una configuración funcional y luego agregar todo lo que está allí al requirements.txtarchivo?
Gabriel
2
@Gabriel: actualmente sí, ya que muchos paquetes de Python se instalan ejecutando un setup.pyarchivo que contiene las dependencias que necesitan. Esto debería mejorar una vez que el paquete Python se convierta en archivos de rueda ( pythonwheels.com ) que le permiten recopilar una lista de todos los paquetes necesarios sin ejecutar código arbitrario en los setup.pyarchivos.
Simeon Visser
1
Gracias por la explicación Simeón. Una cosa más si no te importa: ¿por qué esto no sucede en Ubuntu 14.04 pero sí en Ubuntu 12.04?
Gabriel
44
@Gabriel: No estoy seguro, en mi experiencia pipsiempre aborta cuando no puede encontrar un paquete para instalar. Dicho esto, pipse está desarrollando activamente, por lo que podría ser que tengas una versión con la que no he trabajado.
Simeon Visser
@SimeonVisser, "[ruedas] le permiten recopilar una lista de todos los paquetes necesarios sin ejecutar código arbitrario", interesante, ¿comparte la mente cómo hacerlo realmente (por ahora)?
sschuberth
39

Había instalado python3 pero mi python en / usr / bin / python todavía era la versión 2.7 anterior

Esto funcionó ( <pkg>fue pyserialen mi caso):

python3 -m pip install <pkg>
fauces
fuente
1
esto sucede cuando en setuptools hay un python_requires='>=3.0'requisito
Juan-Kabbali
11

Después de 2 horas de búsqueda, encontré una manera de solucionarlo con solo una línea de comando. Necesita saber la versión del paquete (solo busque la versión del PAQUETE).

Mando:

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

El siguiente comando funcionó para mí:

python -m pip install flask
Persona de libre dedicación
fuente
4

Intente instalar el matraz a través de PowerShell con el siguiente comando.

pip install --isolated Flask

Esto permitirá la instalación para evitar las variables de entorno y la configuración del usuario.

usuario3782287
fuente
3

No siempre, pero en algunos casos el paquete ya existe. Por ejemplo, getpass. No aparece en la lista de "lista de pip", pero se puede importar y usar:

ingrese la descripción de la imagen aquí

Si intento instalar pip getpass, aparece el siguiente error: "No se pudo encontrar una versión que satisfaga el requisito getpass"

svinec
fuente
1

Si enfrenta este problema en el lugar de trabajo. Esta podría ser la solución para ti.

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

Use el símbolo del sistema y luego seleccione Ejecutar como administrador.

Actualiza la versión pip

Para actualizar PIP, escriba este comando y luego presione Entrar: -

python.exe -m pip install --upgrade pip

Regrese a la ruta de Python C: \ Users \ Jack \ AppData \ Local \ Programs \ Python \ Python37 \ Scripts

Escriba jupyter notebook

Será redirigido a http: // localhost: 8888 / undefined / tree - Página de inicio de Jupyter

Espero eso ayude !!!!!!!!!!!

arup.dutta22
fuente
2
¿Qué tiene que ver Jupyter con esto?
Bzazz
¿Cómo puede la actualización de pip resolver las dependencias? Requiere dependencias en el directorio de llamadas.
Rizwan Javid
-7

podría ayudar

rueda de instalación de sudo pip == 0.29.0

Trisha Chetani
fuente
44
Lo siento ... No leo chino u otro idioma asiático. El enlace de referencia podría romperse en el futuro ... por favor, publique lo esencial aquí. Como publicado su respuesta de baja calidad sin contexto.
ZF007
1
El enlace de referencia está en japonés ... considere compartir enlaces en inglés
javidazac
66
El código es comprensible para todos los desarrolladores y la cantidad de japonés es mínima y poco más que los títulos que introducen el siguiente código (traduzca si es demasiado difícil para usted, pero realmente no necesita hacerlo para comprender lo que está sucediendo). No debería haber ningún problema con el uso de otros idiomas además del inglés, siempre que los ejemplos de código sean claros y no dependan completamente del idioma extranjero que se use.
rg88
66
@ rg88 Eso estaría bien para un comentario (tal vez con una advertencia), pero una respuesta sobre Stack Overflow debería ser independiente y convincente.
tripleee