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 ...
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]
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
ypython -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 usasetup_requires='numpy'
. Esto se debe a que invocaráeasy_install
menos que ese paquete tenga unpyproject.toml
(ver pypa / pip # 6945 (comentario) ).Hay una solución alternativa: haz explícitamente
pip install numpy
antes depip 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.
Comentario más útil
hay muchas razones válidas para ejecutar 2.7, por favor no inicie ese debate aquí.