Numpy: pip install en python 2.7 intentando instalar numpy 1.17, al contrario de NEP 14

Creado en 16 ago. 2019  ·  15Comentarios  ·  Fuente: numpy/numpy

pip install numpy en python 2.7 intenta instalar numpy 1.17, que eliminó la compatibilidad con python 2.7. Esto es contrario a la funcionalidad descrita en NEP 14 , que establece:

... pip install numpy en Python 2 continuará dando la última versión funcional a perpetuidad ...

Información de la versión de Numpy / Python:

versión pip: 19.2.2
python: 2.7.15 | Anaconda, Inc. | (predeterminado, 23 de octubre de 2018, 18:31:10) n [GCC 7.3.0]

32 - Installation

Comentario más útil

la verdadera pregunta es por qué estás usando Python 2.7

hay muchas razones válidas para ejecutar 2.7, por favor no inicie ese debate aquí.

Todos 15 comentarios

Parece haber un error en pip o setuptools que causa esto, ¿puedes intentar actualizar pip? (ver también gh-13911 que espero sea un duplicado). Probablemente puedas actualizar pip con pip en sí: python -m pip install --upgrade pip y python -m pip install --upgrade setuptools ?

la verdadera pregunta es por qué estás usando Python 2.7

la verdadera pregunta es por qué estás usando Python 2.7

hay muchas razones válidas para ejecutar 2.7, por favor no inicie ese debate aquí.

Parece haber un error en pip o setuptools que causa esto, ¿puedes intentar actualizar pip? (ver también gh-13911 que espero sea un duplicado). Probablemente puedas actualizar pip con pip en sí: python -m pip install --upgrade pip y python -m pip install --upgrade setuptools ?

Estoy ejecutando las últimas versiones de ambos: pip 19.2.2 y setuptools 41.1.0.

la verdadera pregunta es por qué estás usando Python 2.7

hay muchas razones válidas para ejecutar 2.7, por favor no inicie ese debate aquí.

De hecho los hay. En mi caso, estoy intentando ejecutar un software de análisis científico desarrollado académicamente que no ha sido adaptado a py3.

Pero el punto aquí no es si debería o no usar Python 2.7, es que numpy hizo una declaración formal de la funcionalidad esperada, y no es la verdadera funcionalidad. Ese, en mi opinión, es el error.

Ayer noté que pip no instalaría pytest 5.0.1 para Python 2.7 porque 2.7 no era compatible, por lo que pip funciona correctamente en algunos casos. Me pregunto si hay alguna información en algún lugar que necesite actualizarse para 1.17.

Puede probar python2.7 -mpip para asegurarse de que pip sepa qué versión se está ejecutando. También parece que está usando Anaconda, que puede ser una complicación cuando se mezcla con pip.

¿Qué muestra which pip ?

Hmmm, en mi máquina, pip 18.1 y setuptools 41.0.1 funcionan bien (tanto en modo binario como sin modo binario). Actualizar a 19.2.2 y 41.1.0 no cambia nada para mí. La versión de Python es 2.7.16+ (debian).

Como señala Chuck, supongo que se asegura de usar python2.7 -mpip lugar de pip para asegurarse de obtener la versión más reciente instalada (en caso de que esté usando --user o tenga otra versión pip por alguna razón)?

Sería realmente bueno comprender qué está causando esto exactamente.

@IPetrik, ¿podrías armar un ejemplo completamente reproducible? Estás usando Anaconda, así que algo como:

conda create -n py27-empty
conda activate py27-empty
conda install pip
# Some diagnostics
which pip
pip --version
conda list setuptools

pip install numpy

Probé varias variaciones de esto, pero no puedo reproducir su problema.

Después de intentar preparar un ejemplo mínimo, descubrí el problema: usamos un servidor de caché devpi PyPI local que estaba en mi pip.conf como extra-index-url . Si elimino eso de mi pip.conf , todo funciona bien ... Ups.

Hmm, parece que Pip debería manejar eso. ¿Hay algo especial en el caché y pip.conf ? No estoy familiarizado con esas cosas. @njsmith ¿ Alguna idea?

Me pregunto si el servidor devpi no reenvía correctamente la metainformación sobre las versiones disponibles para un paquete determinado.

Encontré una razón por la que un nuevo pip puede intentar instalar 1.17.0 para Python 2.7. Esto sucede cuando un paquete usa setup_requires='numpy' . Esto se debe a que invocará easy_install menos que ese paquete tenga un pyproject.toml (consulte https://github.com/pypa/pip/issues/6945#issuecomment-526479930).

Hay una solución alternativa: haz explícitamente pip install numpy antes de pip install package-with-setup-requires .

Y la solución es: ese paquete debería agregar pyproject.toml , que hará que este problema desaparezca para una nueva versión de ese paquete.

Encontré una razón por la que un nuevo pip puede intentar instalar 1.17.0 para Python 2.7. Esto sucede cuando un paquete usa setup_requires='numpy' . Esto se debe a que invocará easy_install menos que ese paquete tenga un pyproject.toml (ver pypa / pip # 6945 (comentario) ).

Hay una solución alternativa: haz explícitamente pip install numpy antes de pip install package-with-setup-requires .

Un caso concreto de que es pip install pycuda , que falla así:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-LYaxup/pycuda/setup.py", line 251, in <module>
    main()
  ...
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _execfile
    code = compile(script, filename, 'exec')
  File "/tmp/easy_install-mp9NYd/numpy-1.19.0rc1/setup.py", line 182
    raise ValueError(f'Submodule {p} missing')
                                            ^
SyntaxError: invalid syntax

La solución es simple, como señaló @rgommers : primero ejecute pip install numpy==1.16.6 (para la última versión de NumPy compatible con Python 2.7) y luego vuelva a intentar pip install pycuda .

Ese es un error pip , y parece ser uno muy serio. Puedo reproducir eso con pip 20.1.1. pip-2.7 install numpy instala correctamente 1.16.6 , por lo que los metadatos de numpy en PyPI son correctos. pip-2.7 install pycuda intenta instalar el último numpy en lugar de 1.16.6 .

Probablemente ya se informó, no tengo tiempo para investigarlo en los próximos días. @artob, si miras si hay un problema con Pip para esto y abres uno de lo contrario, sería muy apreciado.

¿Fue útil esta página
0 / 5 - 0 calificaciones