La consola de IPython no puede localizar “backports.shutil_get_terminal_size” y no se carga

Estoy ejecutando Python2.7 en Windows 10 haciendo env y la mayoría de la administración de pkg con Anaconda. Después de actualizar varios paquetes, mi consola ipython ahora no se inicia en ningún IDE o en la consola. Cuando bash ejecutarlo en la consola me sale este error:

Traceback (most recent call last): File "C:\Anaconda3\Scripts\ipython-script.py", line 3, in  import IPython File "C:\Anaconda3\lib\site-packages\IPython\__init__.py", line 48, in  from .core.application import Application File "C:\Anaconda3\lib\site-packages\IPython\core\application.py", line 24, in  from IPython.core import release, crashhandler File "C:\Anaconda3\lib\site-packages\IPython\core\crashhandler.py", line 28, in  from IPython.core import ultratb File "C:\Anaconda3\lib\site-packages\IPython\core\ultratb.py", line 121, in  from IPython.utils.terminal import get_terminal_size File "C:\Anaconda3\lib\site-packages\IPython\utils\terminal.py", line 27, in  import backports.shutil_get_terminal_size ImportError: No module named backports.shutil_get_terminal_size 

Lo primero que intenté hacer fue:

 pip install --upgrade backports.shutil_get_terminal_size 

salida:

 Requirement already up-to-date: backports.shutil_get_terminal_size in c:\anaconda3\lib\site-packages 

He desinstalado y reinstalado ipython con ambos

 conda uninstall ipython conda install ipython 

y

 pip uninstall ipython pip install ipython 

Todavía no funcionará. ¡Ayuda por favor!

Prueba esto

 conda config --add channels conda-forge conda install backports.shutil_get_terminal_size 

De acuerdo con este hilo, esto se debe a un error en conda que conduce a un conflicto con las instalaciones de pip y se puede resolver con una reinstalación forzada. Para el autor del hilo, $ conda install --force ipython resolvió el problema, para mí fue $ conda install --force backports .

Estoy en CentOS 7 y necesitaba cambiar mi terminal.py como se muestra a continuación.

En las declaraciones de importación, jugué un poco con los prefijos y conseguí que funcionara.

 import os import sys import warnings try: from backports import get_terminal_size as _get_terminal_size except ImportError: # use backport on Python 2 from shutil_backports import get_terminal_size as _get_terminal_size 
  • Funciona para la versión Anaconda Python Anaconda2-4.2.0-Linux-x86_64.sh
  • Edite el archivo y elimine las declaraciones de importación “intentar” y “excepto”
  • Añadir en la nueva statement de importación
  • Actualizar config analizador => ./conda instalar configparser
  • Instale nbbrowserpdf => .pip instale nbbrowserpdf

    vim +22 /home/alienone/anaconda2/lib/python2.7/site-packages/IPython/utils/terminal.py

    desde backports importar shutil_get_terminal_size como _get_terminal_size

Lo único que me funcionó fue descargar el archivo comprimido desde pypi y ejecutar python setup.py install

Funcionó a las mil maravillas

Virtualenv puede resultar muy útil en un caso como este, e incluso más específicamente, un virtualenv sin paquetes de sitios globales permitidos. Descarte muchas causas simplemente haciendo una instalación limpia en un virtualenv aislado.

En mi experiencia, IPython y sus dependencias realmente quieren estar en el mismo sitio. Si tiene el paquete backports instalado globalmente pero IPython está instalado en el sitio de roaming del usuario, puede esperar errores de importación en tiempo de ejecución, como los que se describen en el OP.

Me doy cuenta de que a veces necesitamos paquetes de sitios globales, pero la penalización es un manejo de dependencias y site más complicado dentro de pip / setuptools. Dependiendo de la configuración de Python y las condiciones del entorno de Windows, sus paquetes pueden distribuirse entre sitios globales, sitios de usuarios (roaming) y sitios de virtualenv.

Descartar problemas de site extraños al crear e instalar clean en un virtualenv sin acceso a paquetes globales o de usuario. El comando virtualenvwrapper y add2virtualenv se puede usar para permitir de forma limpia ciertos paquetes globales.

En caso de que esto ayude a alguien, el problema para mí parecía haber instalado el configparser con pip localmente, y luego tratar de instalar todo lo demás usando conda. Arreglar:

 pip uninstall configparser # You may need to install configparser now using conda... ipython # No ImportError now. 

Parece que la instalación de configparser coloca un paquete de backports en el espacio de nombres de importación, que tuvo prioridad sobre el paquete instalado conda.