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

Traceback (most recent call last):
File "C:\Anaconda3\Scripts\ipython-script.py", line 3, in <module>
import IPython
File "C:\Anaconda3\lib\site-packages\IPython\__init__.py", line 48, in  <module>
from .core.application import Application
File "C:\Anaconda3\lib\site-packages\IPython\core\application.py", line 24, in <module>
from IPython.core import release, crashhandler
File "C:\Anaconda3\lib\site-packages\IPython\core\crashhandler.py", line 28, in <module>
from IPython.core import ultratb
File "C:\Anaconda3\lib\site-packages\IPython\core\ultratb.py", line 121, in <module>
from IPython.utils.terminal import get_terminal_size
File "C:\Anaconda3\lib\site-packages\IPython\utils\terminal.py", line 27, in <module>
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!

19
Rob Truxal 15 may. 2016 a las 01:13

6 respuestas

La mejor respuesta

Prueba esto

conda config --add channels conda-forge
conda install backports.shutil_get_terminal_size
30
rjmohit 6 jun. 2016 a las 19:38

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

En las declaraciones de importación, me metí con los prefijos y lo hice funcionar:

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
4
Mike 21 jun. 2016 a las 01:34

En caso de que esto ayude a alguien, el problema para mí parece haber sido instalar configparser con pip localmente, y luego intentar 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 tiene prioridad sobre el paquete instalado conda.

0
markmuetz 4 sep. 2017 a las 09:55

Virtualenv puede resultar muy útil en un caso como este, y aún 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 de 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 descritos en el OP.

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

Descarte problemas extraños site construyendo e instalando clean en un virtualenv sin acceso a paquetes globales o de usuario. El comando virtualenvwrapper y add2virtualenv se pueden usar para permitir limpiamente ciertos paquetes globales.

0
user2097818 29 mar. 2017 a las 22:48

De acuerdo con este hilo esto se debe a un error en conda que genera 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.

5
christianbrodbeck 1 oct. 2016 a las 14:50

Lo único que funcionó para mí fue descargar el tarball de pypi y ejecutar python setup.py install

Funcionó a las mil maravillas

0
Obol 19 mar. 2017 a las 13:03