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

Resuelto Gabriel asked hace 9 años • 16 respuestas

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 frecuentemente 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 soluciono manualmente con:

pip install --user <package>

y luego ejecute el segundo pip installcomando nuevamente.

Pero eso sólo 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, nosey ahora me quejo de que necesito mock.

¿Hay alguna manera de pipinstalar automáticamente todas las dependencias necesarias para no tener que hacerlo manualmente una por una?

Agregar : Esto solo sucede en Ubuntu 12.04 por cierto. En Ubuntu 14.04, los pip installcomandos aplicados al requirements.txtarchivo funcionan sin problemas.

Gabriel avatar Aug 31 '15 07:08 Gabriel
Aceptado

Aunque en realidad no responde a esta pregunta específica. Otros recibieron el mismo mensaje de error con este error.

Para aquellos a quienes les gusta, sus iniciales olvidaron -r: usar pip install -r requirements.txtes -resencial para el comando.

La respuesta original:

https://stackoverflow.com/a/42876654/10093070

Chiel avatar Sep 18 '2020 10:09 Chiel

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

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

python3 -m pip install <pkg>
maw avatar Oct 09 '2018 16:10 maw

Este enfoque (tener todas las dependencias en un directorio y no descargar 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 avatar Aug 31 '2015 00:08 Simeon Visser

Solo un recordatorio para quién busque en Google este error y venga aquí.

Digamos que recibo este error:

$ python3 example.py
Traceback (most recent call last):
  File "example.py", line 7, in <module>
    import aalib
ModuleNotFoundError: No module named 'aalib'

Como menciona aalib, se me ocurrió intentar aalib:

$ python3.8 -m pip install aalib
ERROR: Could not find a version that satisfies the requirement aalib (from versions: none)
ERROR: No matching distribution found for aalib

Pero en realidad es un nombre de paquete incorrecto , asegúrese pip search( servicio deshabilitado al momento de escribir este artículo), o busque en Google o en el sitio pypi para obtener el nombre exacto del paquete :

ingrese la descripción de la imagen aquí

Luego instale exitosamente:

$ python3.8 -m pip install python-aalib
Collecting python-aalib
  Downloading python-aalib-0.3.2.tar.gz (14 kB)
...

Como pip --helpse dijo:

$ python3.8 -m pip --help
...
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.

Para tener una forma sistemática de descubrir las causas fundamentales en lugar de confiar en la suerte, puede agregar -vvvla opción de pipcomando para ver los detalles, por ejemplo:

$ python3.8 -u -m pip install aalib -vvv
User install by explicit request
Created temporary directory: /tmp/pip-ephem-wheel-cache-b3ghm9eb
Created temporary directory: /tmp/pip-req-tracker-ygwnj94r
Initialized build tracking at /tmp/pip-req-tracker-ygwnj94r
Created build tracker: /tmp/pip-req-tracker-ygwnj94r
Entered build tracker: /tmp/pip-req-tracker-ygwnj94r
Created temporary directory: /tmp/pip-install-jfurrdbb
1 location(s) to search for versions of aalib:
* https://pypi.org/simple/aalib/
Fetching project page and analyzing links: https://pypi.org/simple/aalib/
Getting page https://pypi.org/simple/aalib/
Found index url https://pypi.org/simple
Getting credentials from keyring for https://pypi.org/simple
Getting credentials from keyring for pypi.org
Looking up "https://pypi.org/simple/aalib/" in the cache
Request header has "max_age" as 0, cache bypassed
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/aalib/ HTTP/1.1" 404 13
[hole] Status code 404 not in (200, 203, 300, 301)
Could not fetch URL https://pypi.org/simple/aalib/: 404 Client Error: Not Found for url: https://pypi.org/simple/aalib/ - skipping
Given no hashes to check 0 links for project 'aalib': discarding no candidates
ERROR: Could not find a version that satisfies the requirement aalib (from versions: none)
Cleaning up...
Removed build tracker: '/tmp/pip-req-tracker-ygwnj94r'
ERROR: No matching distribution found for aalib
Exception information:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 186, in _main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 357, in run
    resolver.resolve(requirement_set)
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 177, in resolve
    discovered_reqs.extend(self._resolve_one(requirement_set, req))
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 333, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/usr/lib/python3/dist-packages/pip/_internal/legacy_resolve.py", line 281, in _get_abstract_dist_for
    req.populate_link(self.finder, upgrade_allowed, require_hashes)
  File "/usr/lib/python3/dist-packages/pip/_internal/req/req_install.py", line 249, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 926, in find_requirement
    raise DistributionNotFound(
pip._internal.exceptions.DistributionNotFound: No matching distribution found for aalib

Del registro anterior, es bastante obvio que la URL https://pypi.org/simple/aalib/404 no se encontró. Entonces podrás adivinar las posibles razones que causan ese 404, es decir, un nombre de paquete incorrecto. Otra cosa es que puedo modificar archivos Python relevantes de módulos pip para depurarlos aún más con el registro anterior. Para editar .whlel archivo, puede usar wheelel comando to unpackypack .

林果皞 avatar Dec 17 '2020 08:12 林果皞