Ipython: Ningún módulo llamado shutil_get_terminal_size

Creado en 23 jun. 2016  ·  71Comentarios  ·  Fuente: ipython/ipython

Buen día,
Estoy contribuyendo a un pequeño proyecto para crear un kernel sobre ipykernel. Ha pasado un tiempo desde que lo toqué, y hoy, cuando implementé un nuevo entorno de desarrollo al instalar Jupyter, obtuve el siguiente seguimiento de pila al llamar a ipykernel:

  File "<path to python>/lib/python2.7/site-packages/ipykernel-4.3.1-py2.7.egg/ipykernel/__init__.py", line 2, in <module>
    from .connect import *
  File "<path to python>/lib/python2.7/site-packages/ipykernel-4.3.1-py2.7.egg/ipykernel/connect.py", line 13, in <module>
    from IPython.core.profiledir import ProfileDir
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/__init__.py", line 48, in <module>
    from .core.application import Application
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/core/application.py", line 24, in <module>
    from IPython.core import release, crashhandler
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/core/ultratb.py", line 126, in <module>
    from IPython.utils.terminal import get_terminal_size
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/utils/terminal.py", line 22, in <module>
    from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size
ImportError: No module named shutil_get_terminal_size

Obviamente, algo cambió desde mi último uso de IPython e ipykernel. ¿Alguna idea de cuál es el problema? Estoy trabajando en una caja OSX con Python 2.7.10.

Lo mejor, Aurélien

Comentario más útil

Parece que ha instalado IPython sin obtener sus dependencias de alguna manera. Dado que veo huevos, esto probablemente significa que tiene una versión demasiado antigua de setuptools y podría estar usando easy_install . Lo primero es lo primero, asegúrese de tener pip / setuptools relativamente recientes:

pip install --upgrade setuptools pip

Luego, intente reinstalar IPython con pip (nunca use easy_install, a menos que sepa que hay una buena razón por la que pip no funcionará / no puede funcionar. Estos casos son raros):

pip uninstall ipython
pip install ipython

Todos 71 comentarios

Parece que ha instalado IPython sin obtener sus dependencias de alguna manera. Dado que veo huevos, esto probablemente significa que tiene una versión demasiado antigua de setuptools y podría estar usando easy_install . Lo primero es lo primero, asegúrese de tener pip / setuptools relativamente recientes:

pip install --upgrade setuptools pip

Luego, intente reinstalar IPython con pip (nunca use easy_install, a menos que sepa que hay una buena razón por la que pip no funcionará / no puede funcionar. Estos casos son raros):

pip uninstall ipython
pip install ipython

Específicamente en este caso, hemos agregado una dependencia en el paquete backports.shutil_get_terminal_size .

¡Gracias por tus comentarios rápidos! Sin embargo, el misterio se profundiza. Parece que la instalación de Jupyter a través de pip en la línea de comandos produce un resultado diferente al de tener Jupyter configurado como requisito cuando se utilizan herramientas de configuración . Si bien el primer enfoque tiene éxito, el segundo falla para mí. Estos son los pasos para reproducir este problema:

Primero comenzamos con un intérprete de Python 2.7.11 barebone, con solo tres paquetes instalados:

$ pip list
pip (8.1.2)
setuptools (23.1.0)
virtualenv (15.0.2)

Si instalo Jupyter usando pip, todo funciona bien y obtengo los siguientes paquetes:

$ pip install jupyter
<long output>
$ pip list
appnope (0.1.0)
backports-abc (0.4)
backports.shutil-get-terminal-size (1.0.0)
backports.ssl-match-hostname (3.5.0.1)
certifi (2016.2.28)
configparser (3.5.0)
decorator (4.0.10)
entrypoints (0.2.2)
functools32 (3.2.3.post2)
gnureadline (6.3.3)
ipykernel (4.3.1)
ipython (4.2.0)
ipython-genutils (0.1.0)
ipywidgets (5.1.5)
Jinja2 (2.8)
jsonschema (2.5.1)
jupyter (1.0.0)
jupyter-client (4.3.0)
jupyter-console (4.1.1)
jupyter-core (4.1.0)
MarkupSafe (0.23)
mistune (0.7.2)
nbconvert (4.2.0)
nbformat (4.0.1)
notebook (4.2.1)
pathlib2 (2.1.0)
pexpect (4.1.0)
pickleshare (0.7.2)
pip (8.1.2)
ptyprocess (0.5.1)
Pygments (2.1.3)
pyzmq (15.2.0)
qtconsole (4.2.1)
setuptools (23.1.0)
simplegeneric (0.8.1)
singledispatch (3.4.0.3)
six (1.10.0)
terminado (0.6)
tornado (4.3)
traitlets (4.2.1)
wheel (0.29.0)
widgetsnbextension (1.2.3)

Sin embargo, si intento instalar Jupyter como requisito para un proyecto con el siguiente script setup.py (tenga en cuenta que reinicio desde un intérprete 2.7.11 nuevo con los tres módulos base pip , setuptools y virtualenv ):

#!/usr/bin/env python
import setuptools
setuptools.setup(
    ...
    install_requires = [
        "jupyter"],
   ...

... entonces falla:

$ pip list
pip (8.1.2)
setuptools (23.1.0)
virtualenv (15.0.2)
$ ./setup.py install
<long output>
Searching for entrypoints
Reading https://pypi.python.org/simple/entrypoints/
No local packages or download links found for entrypoints
error: Could not find suitable distribution for Requirement.parse('entrypoints')
make: *** [install] Error 1

Curiosamente, al enumerar los paquetes que _did_ se instalaron, podemos ver que ipython y jupyter-console ahora son la versión 5.0.0b4 y 5.0.0b1, respectivamente en lugar de 4.2.0 y 4.1.1 como arriba al instalar Jupyter con pip . Aquí están los paquetes:

$ pip list
ipykernel (4.3.1)
ipython (5.0.0b4)
ipywidgets (5.1.5)
jupyter (1.0.0)
jupyter-client (4.3.0)
jupyter-console (5.0.0b1)
nbconvert (4.2.0)
notebook (4.2.1)
pip (8.1.2)
qtconsole (4.2.1)
setuptools (23.1.0)
tornado (4.3)
traitlets (4.2.1)
wheel (0.29.0)
widgetsnbextension (1.2.3)

Puede que me esté perdiendo algo aquí, pero no estoy seguro de qué. ¿Alguna idea de por qué tener jupyter como dependencia en un script setup.py activado por setuptools falla aquí?

Mejor,
Aurélien

Eso sugiere que tal vez setuptools obtenga una versión diferente cuando se importa de la que pip está listada (un error conocido causado por herramientas de configuración antiguas). ¿Qué obtienes de:

python -c 'import setuptools; print(setuptools, setuptools.__version__)'

Y también:

python -m site

También es algo que puede no ser familiar que si usa setuptools en setup.py, nunca debe hacer python setup.py install , solo pip install . .

Aquí están los resultados:

$ python -c 'import setuptools; print(setuptools, setuptools.__version__)'
(<module 'setuptools' from '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/setuptools/__init__.pyc'>, '23.1.0')

y

$ python -m site
sys.path = [
    '/Users/ajmazurie/Data/Professional-MSU/2015.07-MSU-me-Jupyter_in_Classroom/Projects/Callysto/callysto',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/jupyter-1.0.0-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/ipywidgets-5.1.5-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/ipykernel-4.3.1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/nbconvert-4.2.0-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/jupyter_console-5.0.0b1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/qtconsole-4.2.1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/notebook-4.2.1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/widgetsnbextension-1.2.3-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/traitlets-4.2.1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/tornado-4.3-py2.7-macosx-10.10-x86_64.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/jupyter_client-4.3.0-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python27.zip',
    '/Users/ajmazurie/<path to python>/lib/python2.7',
    '/Users/ajmazurie/<path to python>/lib/python2.7/plat-darwin',
    '/Users/ajmazurie/<path to python>/lib/python2.7/plat-mac',
    '/Users/ajmazurie/<path to python>/lib/python2.7/plat-mac/lib-scriptpackages',
    '/Users/ajmazurie/<path to python>/lib/python2.7/lib-tk',
    '/Users/ajmazurie/<path to python>/lib/python2.7/lib-old',
    '/Users/ajmazurie/<path to python>/lib/python2.7/lib-dynload',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7/plat-darwin',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7/lib-tk',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7/plat-mac',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7/plat-mac/lib-scriptpackages',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages',
]
USER_BASE: '/Users/ajmazurie/.local' (doesn't exist)
USER_SITE: '/Users/ajmazurie/.local/lib/python2.7/site-packages' (doesn't exist)
ENABLE_USER_SITE: False

También es algo que puede no resultarle familiar que si usa setuptools en setup.py, nunca debe hacer python setup.py install , solo pip install . .

Esto es muy interesante y puede ser una señal de que necesito actualizar mis conocimientos sobre herramientas de pip install . en la carpeta que contiene mi script setup.py anterior, pude instalar con éxito Jupyter y sus dependencias. ¡Gracias!

Como pregunta paralela, ¿por qué no funcionó con python setup.py install ? No pude encontrar ninguna referencia en línea sobre por qué esto podría ser un problema.

Lo mejor, Aurélien

python setup.py install hace lo mismo que easy_install. easy_install hace muchas cosas desagradables, que son la razón por la que se creó pip. Por razones de compatibilidad con versiones anteriores, python setup.py install con setuptools importadas siempre hará las cosas indeseables que hace easy_install y, por lo tanto, nunca se debe llamar.

Solo obtengo este error si instalo ipython en un virtualvenv que se comparte en NFS. ¿Alguna pista de por qué la instalación en un venv en NFS puede causar este problema?

No estoy seguro de por qué NFS marcaría la diferencia, pero verifique la versión de pip dentro del virtualenv, y si no es la última, intente actualizarla:

pip install --upgrade setuptools pip

@takluyver El mismo pip que instala ipython bien en el sistema de archivos "normal", no lo instala correctamente en NFS. Y sí, es la última versión de pip.

Extraño. No tengo idea de por qué NFS afectaría eso.

También encontré este problema con Python 2.7 usando el último pip (8.1.2) y el último setuptools (25.1.6). ¿No es posible que esté pasando algo más?

Instalar backports.shutil_get_terminal_size con pip antemano fue una solución eficaz para el problema.

Como se mencionó en otra parte, coloque PR (https://github.com/paulgb/runipy/pull/125) juntos para mostrar el error backports.shutil_get_terminal_size y el error entrypoints . La primera confirmación muestra el primer error y la segunda confirmación muestra el segundo error. En ambos casos, las primeras 3 construcciones de CI en la matriz son de interés. Los 3 usan setuptools para instalar todo.

Parece un problema en las herramientas de configuración. La instalación con pip (como siempre se debe hacer) lo solucionará .

Sin embargo, no estoy 100% seguro de qué está fallando en setuptools.

Acabo de tener el mismo tipo de problema al instalar IPython (no Jupyter) en un nuevo 2.7.3 virtualenv. IPython pareció instalarse pero faltaba pathlib2 y luego backports.shutil-get-terminal-size . Haciendo un pip install en cada uno se corrigieron las dependencias e IPython ahora está funcionando.

$ pip freeze
nose==1.3.7
numpy==1.8.0
pyreadline==2.1
wsgiref==0.1.2

$ pip install ipython
[...]
Successfully installed ipython setuptools decorator pickleshare simplegeneric traitlets prompt-toolkit pygments pexpect ipython-genutils six wcwidth ptyprocess
Cleaning up...

$ pip freeze
Pygments==2.1.3
decorator==4.0.10
ipython==5.0.0
ipython-genutils==0.1.0
nose==1.3.7
numpy==1.8.0
pexpect==4.2.0
pickleshare==0.7.3
prompt-toolkit==1.0.5
ptyprocess==0.5.1
pyreadline==2.1
simplegeneric==0.8.1
six==1.10.0
traitlets==4.2.2
wcwidth==0.1.7
wsgiref==0.1.2

$ ipython
[...]
pkg_resources.DistributionNotFound: The 'pathlib2' distribution was not found and is required by ipython

$ pip install pathlib2

$ ipython
[...]
pkg_resources.DistributionNotFound: The 'backports.shutil_get_terminal_size' distribution was not found and is required by ipython

$ pip install backports.shutil_get_terminal_size

$ pip freeze
Pygments==2.1.3
backports.shutil-get-terminal-size==1.0.0
decorator==4.0.10
ipython==5.0.0
ipython-genutils==0.1.0
nose==1.3.7
numpy==1.8.0
pathlib2==2.1.0
pexpect==4.2.0
pickleshare==0.7.3
prompt-toolkit==1.0.5
ptyprocess==0.5.1
pyreadline==2.1
simplegeneric==0.8.1
six==1.10.0
traitlets==4.2.2
wcwidth==0.1.7
wsgiref==0.1.2

$ ipython
Python 2.7.3 (default, Aug 11 2016, 11:06:04) 
Type "copyright", "credits" or "license" for more information.

IPython 5.0.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: 

¿Puedes hacer un pip --version ? Supongo que tienes una versión demasiado antigua de pip.

Sí, estás en lo correcto. Estaba en pip 1.4.1.

Repetí el ejercicio después de actualizar mi virtualenv a pip 8.1.2 e IPython 5.0.0 instalado sin problemas.

$ pip freeze
backports.shutil-get-terminal-size==1.0.0
decorator==4.0.10
ipython==5.0.0
ipython-genutils==0.1.0
numpy==1.8.0
pathlib2==2.1.0
pexpect==4.2.0
pickleshare==0.7.3
prompt-toolkit==1.0.5
ptyprocess==0.5.1
Pygments==2.1.3
simplegeneric==0.8.1
six==1.10.0
traitlets==4.2.2
wcwidth==0.1.7

También tengo este problema en OS X:

cternus<strong i="6">@astarael</strong>:~⟫ ipython
Traceback (most recent call last):
  File "/usr/local/bin/ipython", line 7, in <module>
    from IPython import start_ipython
  File "/usr/local/lib/python2.7/site-packages/IPython/__init__.py", line 48, in <module>
    from .core.application import Application
  File "/usr/local/lib/python2.7/site-packages/IPython/core/application.py", line 25, in <module>
    from IPython.core import release, crashhandler
  File "/usr/local/lib/python2.7/site-packages/IPython/core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "/usr/local/lib/python2.7/site-packages/IPython/core/ultratb.py", line 128, in <module>
    from IPython.utils.terminal import get_terminal_size
  File "/usr/local/lib/python2.7/site-packages/IPython/utils/terminal.py", line 22, in <module>
    from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size
ImportError: No module named shutil_get_terminal_size
cternus<strong i="7">@astarael</strong>:~⟫ pip freeze | grep shutil
backports.shutil-get-terminal-size==1.0.0
cternus<strong i="8">@astarael</strong>:~⟫ pip freeze | grep ipython
ipython==5.0.0
ipython-genutils==0.1.0
cternus<strong i="9">@astarael</strong>:~⟫ python -m site
sys.path = [
    '/Users/cternus',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
    '/usr/local/lib/python2.7/site-packages',
    '/Library/Python/2.7/site-packages',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages',
]
USER_BASE: '/Users/cternus/Library/Python/2.7' (doesn't exist)
USER_SITE: '/Users/cternus/Library/Python/2.7/lib/python/site-packages' (doesn't exist)
ENABLE_USER_SITE: True

Intenté hacer sudo pip install --upgrade --force-reinstall ipython (además de reinstalar pip y setuptools) sin suerte.

Después de investigar un poco, creo que el módulo backports.shutil_get_terminal_size sí tiene la culpa:

cternus<strong i="7">@astarael</strong>:/usr/local/lib/python2.7/site-packages⟫ python
Python 2.7.12 (default, Jun 29 2016, 14:05:02)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import backports
>>> dir(backports)
['__doc__', '__name__', '__path__']
>>> import backports.shutil_get_terminal_size
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named shutil_get_terminal_size
>>>
cternus<strong i="8">@astarael</strong>:/usr/local/lib/python2.7/site-packages⟫ ls backports
__init__.py              functools_lru_cache.py   shutil_get_terminal_size
cternus<strong i="9">@astarael</strong>:/usr/local/lib/python2.7/site-packages⟫ ls backports/shutil_get_terminal_size
__init__.py           __init__.pyc          get_terminal_size.py  get_terminal_size.pyc
cternus<strong i="10">@astarael</strong>:/usr/local/lib/python2.7/site-packages⟫

Curiosamente, el módulo backports parece instalar dos versiones (¿ligeramente diferentes?) De sí mismo:

root<strong i="15">@astarael</strong>:/usr/local/lib/python2.7/site-packages/backports⟫ pip show --no-cache -vf backports.shutil-get-terminal-size
---
Metadata-Version: 2.0
Name: backports.shutil-get-terminal-size
Version: 1.0.0
Summary: A backport of the get_terminal_size function from Python 3.3's shutil.
Home-page: https://github.com/chrippa/backports.shutil_get_terminal_size
Author: Christopher Rosell
Author-email: [email protected]
Installer: pip
License: MIT
Location: /usr/local/lib/python2.7/site-packages
Requires:
Classifiers:
  Development Status :: 5 - Production/Stable
  License :: OSI Approved :: MIT License
  Programming Language :: Python :: 2.6
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3.2
Files:
  backports.shutil_get_terminal_size-1.0.0.dist-info/DESCRIPTION.rst
  backports.shutil_get_terminal_size-1.0.0.dist-info/INSTALLER
  backports.shutil_get_terminal_size-1.0.0.dist-info/METADATA
  backports.shutil_get_terminal_size-1.0.0.dist-info/RECORD
  backports.shutil_get_terminal_size-1.0.0.dist-info/WHEEL
  backports.shutil_get_terminal_size-1.0.0.dist-info/metadata.json
  backports.shutil_get_terminal_size-1.0.0.dist-info/top_level.txt
  backports/__init__.py
  backports/__init__.pyc
  backports/shutil_get_terminal_size/__init__.py
  backports/shutil_get_terminal_size/__init__.pyc
  backports/shutil_get_terminal_size/get_terminal_size.py
  backports/shutil_get_terminal_size/get_terminal_size.pyc
  shutil_backports/__init__.py
  shutil_backports/__init__.pyc
  shutil_backports/get_terminal_size.py
  shutil_backports/get_terminal_size.pyc

y parchear IPython / utils / terminal.py para usar shutil_backports.get_terminal_size funciona. Imagínate.

Hola,

Recibía el mismo error en virtualenv. Había estado usando pip para instalar jupyter.

Estuve obteniendo
ImportError: ningún módulo llamado shutil_get_terminal_size

_ "pip freeze" mostró backports.shutil-get-terminal-size == 1.0.0_

Así que intenté actualizar. Mostró:

_pip install --upgrade backports.shutil-get-terminal-size_
Requisito ya actualizado: backports.shutil-get-terminal-size en /Library/Python/2.7/site-packages

Entonces, de alguna manera, estaba accediendo a mis bibliotecas globales y no a la de mi venv.

Luego desinstalé backports.shutil-get-terminal-size del python global y lo instalé en mi venev. Ahora está funcionando bien.

Puedo reproducir esto el 100% del tiempo con esta instalación

pip install --user --upgrade ipython==4.2

Puedo reproducir este 0% del tiempo con esta instalación

pip install --user --upgrade ipython==4.1.1

Tenga en cuenta que con --user la herramienta de Python de la línea de comandos se instala en ~/Library/Python/2.7/bin/ipython lugar de /usr/local/bin

@AndrewHoos y para mí, ambos comandos obtienen las dependencias correctamente. ¿Qué obtienes de pip --version ? Debe ser al menos 8. Si no es así, asegúrese de que sus herramientas de configuración y pip estén actualizadas:

pip install --upgrade setuptools pip

Tengo este problema con el portátil 4.2.2 e ipython 5.1.0 instalados con conda . Como se mencionó anteriormente, ya tengo el shutil_get_terminal_size instalado:

pip install backports.shutil_get_terminal_size
Requirement already satisfied (use --upgrade to upgrade): backports.shutil_get_terminal_size in /.../anaconda/lib/python2.7/site-packages

Sin embargo, en el shell de Python normal, el comando import backports.shutil_get_terminal_size falla.

Ok, encontré una solución cruda pero simple: desinstalar e instalar nuevamente. Ahora ipython funciona ...

$ pip uninstall backports.shutil_get_terminal_size
Uninstalling backports.shutil-get-terminal-size-1.0.0:
  /home/pierre/Programmes/anaconda/lib/python2.7/site-packages/backports
  /home/pierre/Programmes/anaconda/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0-py2.7.egg-info
Proceed (y/n)? y
  Successfully uninstalled backports.shutil-get-terminal-size-1.0.0
$ pip install backports.shutil_get_terminal_size
Collecting backports.shutil_get_terminal_size
  Downloading backports.shutil_get_terminal_size-1.0.0-py2.py3-none-any.whl
Installing collected packages: backports.shutil-get-terminal-size
Successfully installed backports.shutil-get-terminal-size-1.0.0

También encontré este problema
Lamentablemente, nada de lo anterior ayudó mucho, pero el problema es exactamente como se informó anteriormente:

ImportError: ningún módulo llamado shutil_get_terminal_size

Desinstalar e instalar IPython y los puertos posteriores no fue un placer.

El problema era que tenía Jupyter & friends instalado globalmente y shutil_get_terminal_size instalado globalmente. es decir, en /Library/Python/2.7/site-packages/shutil_backports/

Sin embargo, también tenía backports.functools_lru_cache instalado localmente, esto en realidad bloqueó la importación de shutil_backports.

Para probar si este es el problema: ls ~ / Library / Python / 2.7 / lib / python / site-packages (En OSX, si ve una carpeta con puertos posteriores, probablemente sea la culpa. Desinstalé la biblioteca de la biblioteca de usuario y lo agregó a la biblioteca del sistema. De cualquier manera, no puede mezclar y combinar sus puertos posteriores. Debe ser global o local para que funcione completamente.

Mismo problema en Debian Sid (Unstable) completamente actualizado. Actualicé pip; intentó desinstalar e instalar de nuevo desde nuevo; etc. Nada funcionó.

# uname -a
Linux bunsen 4.7.0-1-amd64 #1 SMP Debian 4.7.2-1 (2016-08-28) x86_64 GNU/Linux
# pip2 --version
pip 8.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)
# pip show ipython
---
Metadata-Version: 2.0
Name: ipython
Version: 5.1.0
Summary: IPython: Productive Interactive Computing
Home-page: http://ipython.org
Author: The IPython Development Team
Author-email: [email protected]
Installer: pip
License: BSD
Location: /usr/local/lib/python2.7/dist-packages
Requires: pickleshare, simplegeneric, traitlets, backports.shutil-get-terminal-size, decorator, pygments, prompt-toolkit, pexpect, pathlib2, setuptools
Classifiers:
  Framework :: IPython
  Intended Audience :: Developers
  Intended Audience :: Science/Research
  License :: OSI Approved :: BSD License
  Programming Language :: Python
  Programming Language :: Python :: 2
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Topic :: System :: Shells
Entry-points:
  [console_scripts]
  iptest = IPython.testing.iptestcontroller:main
  iptest2 = IPython.testing.iptestcontroller:main
  ipython = IPython:start_ipython
  ipython2 = IPython:start_ipython
  [pygments.lexers]
  ipython = IPython.lib.lexers:IPythonLexer
  ipython3 = IPython.lib.lexers:IPython3Lexer
  ipythonconsole = IPython.lib.lexers:IPythonConsoleLexer

desinstalar e instalar backports.shutil_get_terminal_size nuevamente funciona.

+1 en osx. Mismo problema, - Desinstalar global e instalar en virtualenv funciona y apunta a local.

@Hiczeke lo intenté y no funcionó

Después de probar muchas cosas, el comando final que resolvió fue actualizar setuptools
Yo recomendaria:

  • Desinstale cualquier paquete del sistema, como debian ipython y python-backports-shutil-get-terminal-size
  • Desinstalar con pip: ipython , jupyter y backports.shutil_get_terminal_size
  • Actualice pip y setuptools: pip install --upgrade setuptools pip`
  • Reinstale ipython (y otros) con pip: pip install ipython jupyter

Lo siguiente solucionó el problema para mí:
pip desinstalar backports.shutil_get_terminal_size
pip install backports.shutil_get_terminal_size

@ Paul-Richter @Hiczeke
¡Muchas gracias!
reinstalar "backports.shutil_get_terminal_size" funcionó bien para mí.

pip install --upgrade --force-reinstall ipython

Esto solucionó el problema en mi Mac

Estoy bastante confundido:

sudo pip uninstall backports.shutil_get_window_size
>>Cannot uninstall requirement backports.shutil-get-window-size, not installed

sudo pip install backports.shutil_get_window_size
>>Could not find a version that satisfies the requirement backports.shutil_get_window_size (from versions: )
>>No matching distribution found for backports.shutil_get_window_size

Arreglado para ti, Ian.

sudo pip desinstalar backports.shutil_get_ terminal _size

sudo pip install backports.shutil_get_ terminal _size

El miércoles 25 de enero de 2017 a las 12:52 p. M. Ian Hincks [email protected]
escribió:

Estoy bastante confundido:

sudo pip desinstalar backports.shutil_get_window_size

No se puede desinstalar el requisito backports.shutil-get-window-size, no instalado

sudo pip install backports.shutil_get_window_size

No se pudo encontrar una versión que satisfaga el requisito backports.shutil_get_window_size (de las versiones :)
No se encontró ninguna distribución coincidente para backports.shutil_get_window_size

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/ipython/ipython/issues/9656#issuecomment-275197674 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/ATln0kDS_u6PaTk6Qunjc_oEtKCv_-cRks5rV5n7gaJpZM4I9MnS
.

@ Paul-Richter Ah, gracias :)

Ninguna de las cosas de desinstalación / reinstalación funcionó para mí. Lo que finalmente funcionó para mí fue sugerido por @ternus en un comentario anterior: abrir (en Linux) /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py y cambiar la línea

from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size

para

from shutil_backports import get_terminal_size as _get_terminal_size

@ihincks : Tu comentario resolvió mi problema en osx 😃

Encontré este error hoy en OS X 10.12.3. Lo siguiente resuelto:

pip install --upgrade pip setuptools
pip install --upgrade --force-reinstall ipython

No creo que se trate de un error de ipython. Recomendar cierre.

Estoy bastante seguro de que no es un error de IPython, pero me gustaría poder averiguar qué es lo que realmente está mal para poder ofrecer a la gente mejores soluciones que reinstalar + esperanza ...

@ pierre-haessig Me salvas el día. Muchas gracias.

@ihincks Probé todas las publicaciones pero ninguna funcionó. Fue solo el tuyo lo que funcionó. Eres un salvavidas :)

fix by ihincks también funciona en Windows 10

Espero que pueda ayudar a alguien.
en mi caso, encontré que la raíz del problema era la versión incorrecta de ipython:

ls -lah /usr/local/bin/ipython*
-rwxr-xr-x  1 z  staff   247B Mar  5 15:16 /usr/local/bin/ipython
-rwxr-xr-x  1 z  staff   247B Mar  5 15:16 /usr/local/bin/ipython3

No sé cómo puede suceder porque no tengo una versión de python3 en absoluto.
Mi problema se resolvió cuando desinstalé Python y eliminé las bibliotecas relacionadas

brew uninstall python
rm -rf /usr/local/lib/python2.7

He reinstalado Python y me aseguro de que pip tenga la versión y la ubicación correctas.
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
pip2 install ipython

@ihincks

Esta es la única respuesta correcta para mí.

sudo pip desinstalar backports.shutil_get_terminal_size
sudo pip install backports.shutil_get_terminal_size

Es probable que Pip no se acostumbre a sudo.
El uso de sudo con pip es lo que hace que los sistemas se rompan en la forma en que esto
tema describe.

Si necesita usar sudo, algo anda mal con su sistema.

METRO

>

@ihincks ¡ En FreeBSD solo funcionó su solución! ¡Gracias una tonelada!

Para su información, me encontré con el mismo problema, pero solo pude solucionar el problema shutil_get_terminal_size usando la opción --ignore-installed en pip. Sin él, el paquete no se reinstalaría correctamente.

pip install --ignore-installed backports.shutil_get_terminal_size

¡La respuesta de @AllanDaemon me resolvió el problema!

Se enfrentó a un problema similar y se resolvió desinstalando y reinstalando backports.shutil_get_terminal_size

pip desinstalar backports.shutil_get_terminal_size
pip install backports.shutil_get_terminal_size

Yo tuve el mismo problema.
Después de probar muchas de las soluciones anteriores, finalmente descubrí que el problema se debe a mi configuración $ PATH.
Quizás anteriormente había usado la opción pip install --user , de modo que /home/jin/.local/lib/python2.7 estaba en mi $ PATH, donde existía otra versión de backports .
Resolví este problema eliminando la carpeta .local/lib/python2.7 .

Para probar si hay un problema con su $ PATH, simplemente puede intentar

import sys
print sys.path

El problema se debe a tener "backports" en las ubicaciones de "Sistema" y "Usuario".
En mi macOS había instalado shutil_get_terminal_size en el sistema, pero tenía otro paquete instalado en la casa de mi usuario. Esta carpeta de usuario tiene prioridad y no busca en Sistema.
Instale todos sus paquetes de Python, con --user es inteligente.
Si su atascado fuerza una reinstalación con --usuario:
pip install --ignore-installed backports.shutil_get_terminal_size --user
Esto probablemente debería agregarse a algunos diagnósticos, ya que me molesta cada vez

Se supone que backports es un 'paquete de espacio de nombres', que puede tener subpaquetes instalados en diferentes lugares como ese. Pero no parece funcionar de manera confiable y no puedo entender por qué. No puedo reproducirlo para depurarlo localmente, y mis intentos de depurarlo a través de otras personas han sido desconcertantes.

@takluyver ¿Has visto https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843898 ? Las últimas 2-3 publicaciones son interesantes.

Desafortunadamente, eso parece más o menos lo que encontré: algo está estropeando el paquete de espacio backports nombres

Comenté aquí https://github.com/chrippa/backports.shutil_get_terminal_size/issues/9#issuecomment -279021331 y mencioné anteriormente la búsqueda de una diferencia entre la instalación con rueda y sin rueda (no binaria) a través de pip, es que algo relevante?

¿Qué pasa con el proveedor como respaldo para la próxima versión de IPython?

¿Es esto algo que se podría incluir en el shutil de CPython?

¿Es esto algo que se podría incluir en el shutil de CPython?

Probablemente no, ya no estamos usando el paquete backport en IPython 6.0 / master, esto ya está en todos los establos de CPython que admitimos, y el problema solo ocurre porque usamos el paquete backport en 2.7 ya que esto no está en CPython 2.7 estándar.

Entiendo. Gracias @Carreau. Me alegro de que solo sea un problema temporal.

Eliminar la instalación global, desinstalar en virtualenv y reinstalar en virtualenv solucionó el problema.

Lo que necesita simplemente escribiendo los siguientes comandos:

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

Solía ​​tener el mismo problema y esto lo resuelve.

Hola
mismo problema en Ubuntu 17.10 con ipython2.
No hay problema con python3

REVISIÓN: sudo -H pip install --ignore-installed backports.shutil_get_terminal_size

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 17.10
Release:    17.10
Codename:   artful

$ python --version
Python 2.7.14

$ python3 --version
Python 3.6.3

$ pip show ipython
Name: ipython
Version: 5.1.0
Summary: IPython: Productive Interactive Computing
Home-page: http://ipython.org
Author: The IPython Development Team
Author-email: [email protected]
License: BSD
Location: /usr/lib/python2.7/dist-packages
Requires: backports.shutil-get-terminal-size, pathlib2, pexpect

$ pip3 show ipython
Name: ipython
Version: 5.1.0
Summary: IPython: Productive Interactive Computing
Home-page: http://ipython.org
Author: The IPython Development Team
Author-email: [email protected]
License: BSD
Location: /usr/lib/python3/dist-packages
Requires: pexpect

$ ipython
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/IPython/__init__.py", line 48, in <module>
    from .core.application import Application
  File "/usr/lib/python2.7/dist-packages/IPython/core/application.py", line 25, in <module>
    from IPython.core import release, crashhandler
  File "/usr/lib/python2.7/dist-packages/IPython/core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "/usr/lib/python2.7/dist-packages/IPython/core/ultratb.py", line 128, in <module>
    from IPython.utils.terminal import get_terminal_size
  File "/usr/lib/python2.7/dist-packages/IPython/utils/terminal.py", line 22, in <module>
    from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size
ImportError: No module named shutil_get_terminal_size

$ apt-cache show python-ipython
Package: python-ipython
Architecture: all
Version: 5.1.0-3
Priority: optional
Section: universe/python
Source: ipython
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Python Modules Team <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1864
Depends: python-decorator, python-pexpect, python-pickleshare, python-pkg-resources, python-prompt-toolkit, python-pygments, python-simplegeneric, python-traitlets, python:any (<< 2.8), python:any (>= 2.7.5-5~), python-backports-shutil-get-terminal-size, python-pathlib2
Breaks: ipython (<< 4)
Replaces: ipython (<< 4)
Filename: pool/universe/i/ipython/python-ipython_5.1.0-3_all.deb
Size: 375048
MD5sum: 7ae68256eb7c6183634ea3680ad4449d
SHA1: 7e2916b5e661793dcb55e86404de5cd1f0d19d8b
SHA256: 0664f1d3c5543cc3ba4db4fcd8bf4526de714e3f35687b49052fad7831cbdee3
Homepage: https://github.com/ipython/ipython
Description-en: Enhanced interactive Python shell (Python 2 version)
 IPython can be used as a replacement for the standard Python shell,
 or it can be used as a complete working environment for scientific
 computing (like Matlab or Mathematica) when paired with the standard
 Python scientific and numerical tools. It supports dynamic object
 introspections, numbered input/output prompts, a macro system,
 session logging, session restoring, complete system shell access,
 verbose and colored traceback reports, auto-parentheses, auto-quoting,
 and is embeddable in other Python programs.
 .
 This package contains the backend terminal shell for Python 2: for
 the actual frontend install ipython.
Description-md5: 713480d81c0c64f1b3a9c4c9350ef96c

$ apt-cache show python3-ipython
Package: python3-ipython
Architecture: all
Version: 5.1.0-3
Priority: optional
Section: universe/python
Source: ipython
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Python Modules Team <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1864
Depends: python3-decorator, python3-pexpect, python3-pickleshare, python3-pkg-resources, python3-prompt-toolkit, python3-pygments, python3-simplegeneric, python3-traitlets, python3:any (>= 3.3.2-2~), python-pexpect
Breaks: ipython3 (<< 4)
Replaces: ipython3 (<< 4)
Filename: pool/universe/i/ipython/python3-ipython_5.1.0-3_all.deb
Size: 375114
MD5sum: c0585bf56c9fbcbb73aa45d25b8fbe14
SHA1: c7118d1050f50723d614a3060ad6d8d31a96e73c
SHA256: 293217ee356c2c2623efce3fc391b1876a38585b0ae7462b2a8a0d3f3424ec86
Homepage: https://github.com/ipython/ipython
Description-en: Enhanced interactive Python shell (Python 3 version)
 IPython can be used as a replacement for the standard Python shell,
 or it can be used as a complete working environment for scientific
 computing (like Matlab or Mathematica) when paired with the standard
 Python scientific and numerical tools. It supports dynamic object
 introspections, numbered input/output prompts, a macro system,
 session logging, session restoring, complete system shell access,
 verbose and colored traceback reports, auto-parentheses, auto-quoting,
 and is embeddable in other Python programs.
 .
 This package contains the backend terminal shell for Python 3: for
 the actual frontend install ipython.
Description-md5: 8182f91eff6e0e148e574a20d31e0f51

@ nicola-lunghi, por favor, no recomiende a la gente que use sudo pip , eso solo romperá su sistema de una manera más extraña a largo plazo. Pip luchará con el administrador de paquetes del sistema por algunos archivos.

Eso es el equivalente a quitar la batería de su alarma de monóxido de carbono porque lo despierta regularmente por la noche. Hay algún problema con su calentador; necesita una solución adecuada.

Gracias @Carreau
Corregiré mi respuesta después de haber extinguido el fuego en mi casa.

Ps, por favor arregle las dependencias de "brezo" -> deb

La solución más fácil es probablemente instalar una versión más nueva de IPython con pip install --user ipython (la bandera --user significa que no necesita sudo). Ya solucionamos este problema en IPython, pero no podemos controlar los paquetes Debian, y los usuarios que instalan a través de apt obtienen una versión desactualizada de IPython.

En caso de que alguien encuentre el mismo problema con Cygwin y python2, la solución es ejecutar Cygwin setup.exe (o uno de los apt-cyg utls) e instalar python2-backports.shutil_get_terminal_size . Esto no se activa como una dependencia de forma predeterminada, por lo que debe instalarse manualmente.

ipython3 está bien listo para usar.

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