La actualización de pip falla con un error de sintaxis causado por sys.stderr.write(f”ERROR: {exc}”)

2 minutos de lectura

avatar de usuario de onknows
lo sabe

En una máquina virtual Vagrant nueva que usa box bento/centos-7, los siguientes comandos corrompen mi instalación de pip:

yum update
yum install epel-release -y
yum install python-pip -y
/usr/bin/pip2 install --upgrade pip setuptools pyOpenSSL psycopg2-binary lxml

Esto falla al final con

  Downloading https://files.pythonhosted.org/packages/84/48/5c99d8770fd0a9eb0f82654c3294aad6d0ba9f8600638c2e2ad74f2c5d52/setuptools-52.0.0.tar.gz (2.1MB)
    100% |████████████████████████████████| 2.1MB 821kB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "setuptools/__init__.py", line 16, in <module>
        import setuptools.version
      File "setuptools/version.py", line 1, in <module>
        import pkg_resources
      File "pkg_resources/__init__.py", line 1367
        raise SyntaxError(e) from e
                                ^
    SyntaxError: invalid syntax

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-GZrC3W/setuptools/
You are using pip version 8.1.2, however version 21.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Si luego actualizo Pip, noto que mi Python está roto. Después de eso, todos los comandos pip terminan con SyntaxError:

[root@bkd-openam ~]# pip install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/9e/24/bc928987f35dd0167f21b13a1777c21b9c5917c9894cff93f1c1a6cb8f3b/pip-21.0.tar.gz
Installing collected packages: pip
  Found existing installation: pip 8.1.2
    Uninstalling pip-8.1.2:
      Successfully uninstalled pip-8.1.2
  Running setup.py install for pip ... done
Successfully installed pip-21.0
[root@bkd-openam ~]# /usr/bin/pip2 install --upgrade pip setuptools pyOpenSSL psycopg2-binary lxml
Traceback (most recent call last):
  File "/usr/bin/pip2", line 9, in <module>
    load_entry_point('pip==21.0', 'console_scripts', 'pip2')()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python2.7/site-packages/pip/_internal/cli/main.py", line 60
    sys.stderr.write(f"ERROR: {exc}")
                                   ^
SyntaxError: invalid syntax

¿Por qué es esto? ¿Es este un problema conocido con Python? ¿Cómo soluciono esto, sin usar entornos virtuales o actualizar la versión del sistema operativo o Python?

¿Puedo usar la versión 20 de Pip en esta instalación de Python? ¿Cómo evito la actualización a Pip 21?


Para el problema equivalente con instalando pip en instalaciones antiguas de Python, consulte La instalación de pip no funciona en python

  • pip ya no es compatible con Python 2. Ambos errores son sintaxis de Python 3 ejecutados con pip2.

    – 9769953

    26 de enero de 2021 a las 5:36


  • ¿Hay alguna razón específica por la que está usando el pip2 ¿dominio? En general, sugiero instalar pyenv, no usar Python del paquete mangager

    – Un jugador de críquet

    26 de enero de 2021 a las 5:47


  • @00 No, el segundo error podría ser de Python 3.4 o 3.5.

    – Doctor

    26 de enero de 2021 a las 5:48

  • Este es un problema conocido con demasiado reciente pip en Pythons más antiguos: consulte stackoverflow.com/a/65871131/7976758

    – Doctor

    26 de enero de 2021 a las 5:49

  • @phd Excepto que otras líneas del segundo rastreo muestran python2.7 (así como pip2). Si bien quizás sea técnicamente correcto en un sentido más amplio (pero ¿qué pasa con Python 3.3 y anteriores?), Aquí está claramente el código de Python 3 que está instalado y se ejecuta en Python 2.

    – 9769953

    26 de enero de 2021 a las 12:33

avatar de usuario del cestero
canasta de mercado

Puede obtener una versión anterior (2.7) de get-pip.py

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py

En mi opinión, debe crear un virtualenv de python2 e instalar su paquete python2 en él, así como pip2. Por ejemplo, cuando instalé cuckoo sandbox, lo hice así:

virtualenv --python=python2 cuckoo/   # make your virtualenv folder with python2
cd cuckoo
source bin/activate
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py   # get pip for python2
python2 get-pip.py        # install pip in your virtualenv
pip install cuckoo       # install your python2 package

Espero que ayude

  • El comando curl anterior ha cambiado a curl bootstrap.pypa.io/pip/2.7/get-pip.py –salida get-pip.py

    – Jonathan_M

    10 de marzo de 2021 a las 13:14


  • La URL ha cambiado de nuevo a: https://bootstrap.pypa.io/pip/2.7/get-pip.py. Y también podría agregar el comando para instalar eso: python2 get-pip.py. Trabajó para arreglar mi instalación pip rota de M1 Mac en el python2.7 nativo

    – yeliabsalohcin

    26 de marzo de 2021 a las 9:12

Este problema tiene que ver con el hecho de que Python 2.7 llegó al final de su vida útil y que la comunidad PIP dejó de brindarle soporte este mes.

PIP muestra avisos de obsolescencia como

DESAPROBACIÓN: Python 2.7 llegó al final de su vida útil el 1 de enero de 2020. Actualice su Python, ya que Python 2.7 ya no se mantiene. pip 21.0 dejará de ser compatible con Python 2.7 en enero de 2021. Puede encontrar más detalles sobre la compatibilidad con Python 2 en pip en
https://pip.pypa.io/en/latest/desarrollo/release-process/#python-2-support
pip 21.0 eliminará la compatibilidad con esta funcionalidad.

Para solucionar esto y continuar con Python 2.7 no compatible, no debe actualizar a la última versión de pip sino a una versión

pip install --upgrade "pip < 21.0"

  • Presumiblemente, esto no funcionará correctamente si pip ya se ha actualizado a una versión que no funciona.

    –Ken Williams

    5 de febrero de 2021 a las 16:04

  • No entiendo el problema. Tengo tanto python2.7 como python3.5 instalados. Python2.7 no está “muerto”, pero estoy divagando… Si PIP quiere python3.5, entonces ¿por qué está tratando de usar python2.7, o por qué le importa si python2.7 existe en mi sistema? PIP supuestamente está escrito por control de versiones expertos.

    – nube_personal

    7 de marzo de 2021 a las 23:28


  • vergonzoso Nunca uso Python. Ahora veo por qué.

    – Antonio

    15/08/2021 a las 18:30

Como PIP eliminó el soporte para Python 2.7, como resultado, enfrentamos el problema mencionado anteriormente, los siguientes son los comandos que realmente me funcionaron en Ubuntu.

sudo apt-get remove --purge python-pip
sudo apt-get autoremove
sudo rm -f /usr/local/bin/pip
sudo easy_install pip==20.3.4
pip --version

Salida: pip 20.3.4

Se puede lograr lo mismo para CentOS cambiando el nombre del administrador de paquetes.

  • solo tenia que hacer sudo easy_install pip==20.3.4 pero independientemente, la sugerencia aquí fue lo único que funcionó para mí

    – Aerofito

    8 de febrero de 2021 a las 18:51


  • Todos los demás comandos son solo para eliminar paquetes pip anteriores, si los hay.

    – gondaljutt

    12 de febrero de 2021 a las 8:35

  • $ sudo easy_install pip==20.3.4 sudo: easy_install: comando no encontrado

    – Vahab

    18 de febrero de 2021 a las 13:26

  • ¿En qué versión de Python estás exactamente?

    – gondaljutt

    19 de febrero de 2021 a las 14:27

  • @Vahab puede instalar easy_install ejecutando: apt-get install -y python-setuptools (o python3-setuptools)

    – PHZ.fi-Pharazon

    6 de agosto de 2022 a las 20:48

Actualización: use el siguiente comando para instalar el pip en python2.7

curl  https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py

¡Disfrútala!

Avatar de usuario de Seweryn Plywaczyk
Seweryn Plywaczyk

Esto me ayudó (Ubuntu 16.04)

En general, eliminé completamente pip y pip3 como:

whereis pip
sudo rm -f <results from whereis pip
whereis pip3
sudo rm -f <results from whereis pip3

Busque pip y elimine archivos y directorios. En mi caso fue:

sudo rm -fr ~/.local/bin/pip3.5
sudo rm -fr ~/.local/bin/pip3
sudo rm -fr ~/.local/lib/python3.5/site-packages/pip*
sudo rm -rf ~/.cache/pip/
sudo rm -rf  /usr/lib/python2.7/dist-packages/pip*
sudo rm -rf  /usr/lib/python3/dist-packages/pip*

Luego instalé pip3 una vez más:

Pitón 3.5

wget https://bootstrap.pypa.io/pip/3.5/get-pip.py

Pitón 3.6

wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py --ignore-installed

Avatar de usuario de Dharman
dharma

Su problema de conflicto de versión. primero verifique python –version, a continuación los pasos para la versión 2.7 de python

  1. rizo https://bootstrap.pypa.io/2.7/get-pip.py -o get-pip.py
  2. python get-pip.py
  3. instalar entorno virtual: python -m pip install –usuario virtualenv
  4. crear venv: python -m entorno virtual entorno
  5. activar venv: origen env/bin/activar

Avatar de usuario de Vedant Pareek
Pareek vedante

Cuando intentó actualizar pip, se actualizó a la versión 21 y como está escrito en el enlace: Compatibilidad con Python2

pip 20.3 fue la última versión de pip compatible con Python 2. Los errores informados con pip que solo ocurren en Python 2.7 probablemente serán cerrados como problemas “no solucionados” por los mantenedores de pip.

Entonces, ahora primero debe eliminar el pip actual instalado, lo que puede hacer desde Centos 7:

yum remove python2-pip

Ahora instalaremos pip de nuevo

yum install python2-pip -y

Ahora actualizaremos pip a la versión compatible

pip install --upgrade pip==20.3.4

Ahora pip el comando funcionará bien

pip -V

  • Actualmente, corriendo pip install --upgrade pip en un sistema CentOS 7 hace que pip se rompa solo. Evidentemente, esto hace que Python 2.x pip descargue e instale una versión rota de pip que no se ejecutará en Python 2. Esto se puede arreglar usando yum reinstall python2-pip. Si desea usar el pip para Python 3.x, use pip3 (desde el python3-pip paquete ñam).

    – anfetamáquina

    13 mayo 2021 a las 17:48

¿Ha sido útil esta solución?