Ipython: ImportError: ningún módulo llamado shutil_get_terminal_size

Creado en 28 jul. 2016  ·  81Comentarios  ·  Fuente: ipython/ipython

Actualización de @carreau :
Reapertura, etiquetando 5.4, deberíamos vender shutil_get_terminal_size.


Después de instalar ipython sudo apt-get install ipython-notebook , ipython aparece un error de la siguiente manera:

jiangyuping@Lenovo :~$ ipython
Rastreo (llamadas recientes más última):
Archivo "/usr/local/bin/ipython", línea 4, en
desde IPython importar start_ipython
Archivo "/usr/local/lib/python2.7/dist-packages/IPython/ init .py", línea 48, en
desde .core.application importar aplicación
Archivo "/usr/local/lib/python2.7/dist-packages/IPython/core/application.py", línea 25, en
de la versión de importación de IPython.core, crashhandler
Archivo "/usr/local/lib/python2.7/dist-packages/IPython/core/crashhandler.py", línea 28, en
de IPython.core importar ultratb
Archivo "/usr/local/lib/python2.7/dist-packages/IPython/core/ultratb.py", línea 128, en
desde IPython.utils.terminal import get_terminal_size
Archivo "/usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py", línea 22, en
desde backports.shutil_get_terminal_size importar get_terminal_size como _get_terminal_size
ImportError: ningún módulo llamado shutil_get_terminal_size

Comentario más útil

@oschow esto _debería_ funcionar en general:

# start by making sure pip, setuptools are up to date:
pip install --upgrade setuptools pip
# uninstall if pip thinks you already have it but don't seem to:
pip uninstall backports.shutil_get_terminal_size
# install it again with out definitely-up-to-date pip:
pip install --upgrade backports.shutil_get_terminal_size

Todos 81 comentarios

Tiene una copia más reciente de IPython instalada fuera de apt y requiere el paquete backports.shutil_get_terminal_size . Use pip para instalar eso.

@takluyver Después pip install ipython , aparece

jiangyuping@Lenovo :~/ipython$ pip instalar ipython
Requisito ya satisfecho (use --upgrade para actualizar): ipython en /usr/local/lib/python2.7/dist-packages

luego, ipython , aparece

jiangyuping@Lenovo :~/ipython$ ipython
Rastreo (llamadas recientes más última):
Archivo "/usr/local/bin/ipython", línea 4, en
desde IPython importar start_ipython
Archivo "/home/jiangyuping/ipython/IPython/ init .py", línea 48, en
desde .core.application importar aplicación
Archivo "/home/jiangyuping/ipython/IPython/core/application.py", línea 25, en
de la versión de importación de IPython.core, crashhandler
Archivo "/home/jiangyuping/ipython/IPython/core/crashhandler.py", línea 28, en
de IPython.core importar ultratb
Archivo "/home/jiangyuping/ipython/IPython/core/ultratb.py", línea 128, en
desde IPython.utils.terminal import get_terminal_size
Archivo "/home/jiangyuping/ipython/IPython/utils/terminal.py", línea 22, en
desde backports.shutil_get_terminal_size importar get_terminal_size como _get_terminal_size
ImportError: ningún módulo llamado shutil_get_terminal_size

Me refería:

pip install backports.shutil_get_terminal_size

Sin embargo, si no trae eso como una dependencia de IPython, eso probablemente significa que tiene una versión anterior de pip. Para actualizarlo:

pip install --upgrade setuptools pip

Gracias, instalado correctamente.

Intenté muchas cosas. El último que resolvió fue actualizar setuptools . También actualicé pip y reinstalé ipython, etc.

¡Gracias! Esto no funcionó para mí. Pero me dio una idea... Hice una instalación pip --actualizada con un archivo whl de backports.shutil_get_terminal_size

Antes de eso, simplemente hacer una instalación de pip resultó en "requisito ya satisfecho", etc.
Ahora puedo ejecutar GraphLab Create de Turi :)

@jnault Tengo el mismo problema porque intenté instalar GraphLab Create de Turi. ¿Qué comandos exactos usaste?

No recuerdo exactamente, pero sí recuerdo que es bastante fácil. Mis pasos:
1) Busque en Google ese archivo con la extensión .whl y
2) búsqueda en google Cómo instalar un archivo Whl
mmm ok, eso parece sarcástico o algo así. Estoy siendo sincero y tratando de ayudar. Pero eso es literalmente lo que hice. Bastante seguro de que el archivo provino de pypi. Supongo que un archivo whl podría instalar Anything, así que me aseguré de que viniera de una fuente confiable.
Supongo que el comando fue: pip install --upgrade backports.shutil_get_terminal_size.whl

@oschow esto _debería_ funcionar en general:

# start by making sure pip, setuptools are up to date:
pip install --upgrade setuptools pip
# uninstall if pip thinks you already have it but don't seem to:
pip uninstall backports.shutil_get_terminal_size
# install it again with out definitely-up-to-date pip:
pip install --upgrade backports.shutil_get_terminal_size

^ Minrk tiene mejores consejos.
Minrk, escribiste "si pip cree que ya lo tienes pero parece que no". Entonces, ¿es posible que el archivo se haya programado en la instalación inicial de Python pero luego se haya perdido? Por lo tanto, aparece como presente, pero ¿realmente no lo es?

Tuve el mismo problema al intentar instalar Graphlab Create. La solución de minrk también me lo arregló.

@minrk tenía la solución de trabajo para mí, solo una desinstalación seguida de una instalación funcionó para mí.
Aquí esta lo que hice.

desinstálelo si pip cree que ya lo tiene pero parece que no:

pip desinstalar backports.shutil_get_terminal_size

instálelo de nuevo sin pip definitivamente actualizado:

pip install --actualizar backports.shutil_get_terminal_size

quitar <path-to>/Python/2.7/site-packages/backports/__init__.*

@bevice ¿Y entonces?

Hasta ahora no he podido arreglar con ninguna de las sugerencias en este hilo o cualquier otro hilo.

si corro

$ python -s
>>> from backports.shutil_get_terminal_size import get_terminal_size
>>> get_terminal_size()
terminal_size(columns=112, lines=40)

funciona. Pero ejecutar ipython o jupyter notebook me da el mismo error, que no encuentra shutil_get_terminal_size

Creo que esto significa que tiene otro paquete backports.<something> instalado en algún lugar que ha estropeado la maquinaria del paquete de espacio de nombres. Probablemente necesitará encontrar eso y desinstalarlo. Pruebe pip list para ver todos los paquetes instalados.

@takluyver Gracias por la rápida respuesta.

Esto es lo que encontré:

backports-abc (0.4)
backports.shutil-get-terminal-size (1.0.0)
backports.ssl-match-hostname (3.4.0.2)

¿Qué puedo hacer ahora?

Desinstale backports.ssl-match-hostname y backports.shutil-get-terminal-size e instálelos de nuevo.

¿Tengo que "reiniciar" anaconda o algo para que los cambios surtan efecto? Desinstalar los paquetes que mencionaste y reinstalarlos no funcionó.

No, no hay reinicio. Sin embargo, solo para asegurarse, después de desinstalarlos, intente desinstalarlos nuevamente. Repita hasta que no pueda encontrar nada para desinstalar. A veces hay copias en diferentes lugares.

Si eso todavía no funciona, intente desinstalar backports.ssl-match-hostname y déjelo desinstalado (al menos hasta que encuentre lo que lo necesita...)

Bien. Intenté todo lo que dijiste, pero nada funciona. ¿Cuáles son mis opciones? El problema comenzó cuando instalé pymc3. La otra cosa es que cambié algunos scripts para agregar algunos módulos a la caja de herramientas de nipype. ¿Debería quitar todo e instalarlo de nuevo? Este sería el último recurso, espero.

¿Qué obtienes al probar esto en el mismo Python con el que intentas ejecutar IPython?

import backports
print(backports)

Lo he ejecutado con backports instalados:

>>> import backports
>>> print(backports)
<module 'backports' from '/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/

Luego los desinstalé y lo ejecuté de nuevo:

>>> import backports
>>> print(backports)
<module 'backports' (built-in)>

Así que aparentemente tengo algunos paquetes integrados en alguna parte que están arruinando las cosas. Pero no tengo ni idea de cómo encontrarlos. Incluso si los encuentro, es posible que no pueda cambiar nada ya que no tengo permisos de root.

¿Hay algo más en la carpeta que te mostró allí ( /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/ )?

No, ahora que está desinstalado, la carpeta falta por completo. como esta la carpeta
../site-packages/backports.shutil-get-terminal-size-1.0.0 que solía estar allí cuando se instaló.

¿Puedes verificar backports.__path__ en Python?

Sin backports instalados:
['/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']

¿Ese es el mismo directorio que antes? ¿ Definitivamente falta? No entiendo cómo podría encontrar ese camino si no hay nada allí.

Busqué todos los backports posibles en el directorio anaconda2_serverwide. No estoy seguro de qué significa todo esto.
Esto es lo que encontré:

file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/future-0.15.2-py27_0/lib/python2.7/site-packages/future/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/configparser-3.5.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/ssl_match_hostname-3.4.0.2-py27_1/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/get_terminal_size-1.0.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/future/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_bak
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/get_terminal_size-1.0.0-py27_0/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/ssl_match_hostname-3.4.0.2-py27_1/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0.tar.bz2
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1.tar.bz2
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc-0.4-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc-0.4-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports-1.0-py27_0.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports_abc-0.4-py27_0.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports.shutil_get_terminal_size-1.0.0-py27_1.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc.py
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc.py
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc.pyc
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc.pyc

¿Había reiniciado Python después de desinstalar backports ? Si no, ¿puede reiniciar Python y verificar backports.__path__ nuevamente? No conozco ninguna forma en que pueda identificar esa ruta si no hay un archivo allí.

¿Cómo reinicio Python?

También he probado lo siguiente:

> conda list | grep backports
backports                 1.0                      py27_0  
backports.shutil_get_terminal_size 1.0.0                    py27_1    conda-forge
backports_abc             0.4                      py27_0  

Así que usé conda para eliminar backports.shutil_get_terminal_size:
> conda uninstall backports.shutil_get_terminal_size

Cuando intento importar backports.shutil_get_terminal_size en python, no lo encuentra. Así que eliminé ipython y jupyter y reinstalé ipython a través de conda, que también instaló jupyter y backports.shutil_get_terminal_size. Sin embargo, ¡_todavía_ no funciona! Estoy perplejo.

Luego eliminé las instalaciones a través de conda y las reinstalé a través de pip. _todavía_ no funciona...

¿Cómo reinicio Python?

Ciérrelo ( exit() ) y vuelva a iniciarlo.

Comprobado para backports:

> conda list | grep backports
backports                 1.0                      py27_0  
backports.shutil_get_terminal_size 1.0.0                    py27_1    conda-forge
backports_abc             0.4                      py27_0  

Ejecuté python después de reiniciarlo:

>>> import backports
>>> backports.shutil_get_terminal_size
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'shutil_get_terminal_size'

Intenté actualizarlo:

> pip install --upgrade backports.shutil_get_terminal_size
Requirement already up-to-date: backports.shutil_get_terminal_size in /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages

no lo entiendo ¿Que más puedo hacer? ¿Puedo editar 'terminal.py' para apuntarlo en la dirección correcta?

Si desinstala todos los paquetes de backports, reinicie Python y verifique:

import backports
backports.__path__

¿Qué sacas?

>>> import backports
>>> backports.__path__
['/home/raid2/mihai/.local/lib/python2.7/site-packages/backports', '/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']

¿Hay algo instalado en el directorio anterior (el que está debajo /home/raid2 )?

Ese es el directorio donde se almacenan los paquetes de python e ipython de todo el sistema. Sin embargo, no los estoy usando, ya que estoy usando la instalación local de anaconda. Y no debería interferir. A decir verdad, en el directorio /home/raid2... no hay ningún paquete backports.shutil_get_terminal_size.

Cuando ejecuto la instalación en todo el sistema (que tiene una versión anterior de ipython), funciona bien. Pero cuando comienzo mi entorno con la nueva instalación de anaconda con
export PATH="/nobackup/archimedes1/Glad/anaconda2_serverwide/bin:$PATH" , no encuentra la función de tamaño de ventana.

Hice un script para tratar de ayudar a depurar esto. ¿Puedes ejecutarlo y publicar el resultado?

https://gist.github.com/takluyver/73cf4e7e7cff4d95f3b23ea80d59bcab

¡Muy bien! 1

Esto es lo que hice para que de alguna manera funcione.
Se desinstalaron ipython y jupyter y backports.shutil_get_window_size con conda y pip:

conda uninstall jupyter ipython backports.shutil_get_window_size
pip uninstall jupyter ipython backports.shutil_get_window_size

Me aseguré de que no queda nada de ningún paquete. Luego reinstalé solo ipython con conda:

> conda install ipython
Fetching package metadata .........
Solving package specifications: ..........

Package plan for installation in environment //nobackup/archimedes1/Glad/anaconda2_serverwide:

The following NEW packages will be INSTALLED:

    backports:                          1.0-py27_0              
    backports.shutil_get_terminal_size: 1.0.0-py27_1 conda-forge
    ipython:                            5.1.0-py27_1 conda-forge

Proceed ([y]/n)? y

Extracting packages ...
[      COMPLETE      ]|###################################################################################| 100%
Linking packages ...
[      COMPLETE      ]|###################################################################################| 100%
mihai<strong i="11">@archimedes</strong>:/tmp > ipython

Y ahora funciona!!! ¡Gracias por tu generoso tiempo @takluyver !

Aquí está el resultado de su secuencia de comandos:

In [2]: run debug_namespace_pkg.py
mod: <module 'backports' from '/home/raid2/mihai/.local/lib/python2.7/site-packages/backports/__init__.pyc'>

backports.__path__ = ['/home/raid2/mihai/.local/lib/python2.7/site-packages/backports', '//nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']

Found /home/raid2/mihai/.local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)


Found //nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Bien, me alegro de que lo hayas hecho funcionar. La salida del script ahora muestra las cosas como se supone que deben ser; con suerte, el script podría ser útil si alguien tiene este problema en el futuro.

También tengo el mismo problema. Probé todo desde el principio, desinstalando e instalando todo. También ejecutó el script que compartió anteriormente:
Aquí está la salida:

aranyo-139-61:Desktop shiva$ python debug_namespace_pkg.py
mod: <module 'backports' (built-in)>

backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']

Found /usr/local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)


Found /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports
No __init__.py found
Found /usr/local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

¿Me puede ayudar con esto? Sin embargo, no quiero usar conda.

¡Gracias!

¿Hay algo en /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports ? ¿Puedes intentar eliminarlo/renombrarlo?

¿Hay algo en /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports? ¿Puedes intentar eliminarlo/renombrarlo?

Probado, sigue el mismo problema.

Hice un cambio en el script de depuración , ¿puede intentar obtenerlo nuevamente y volver a ejecutarlo?

Aquí está la salida -

mod: <module 'backports' (built-in)>

backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']

-- Found /usr/local/lib/python2.7/site-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)


-- Found /usr/local/lib/python2.7/site-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

¿Ha reiniciado Python desde que eliminó/cambió el nombre de ese directorio? Todavía lo está encontrando de alguna manera.

Estoy ejecutando el script usando el comando "python debug_namespace_pkg.py". Y reinicié la terminal antes de hacerlo.

¿Y /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports definitivamente no existe? Como antes, no entiendo cómo se obtiene una referencia a una carpeta que aparentemente no está allí.

Sí, lo renombré en la ubicación que especificaste. ¿Estás seguro de que no te refieres a /usr/local/lib/python2.7/site-packages/backports ?

No, ese es el que necesita encontrar. El que está debajo /Users/shiva parece estar estorbándose de alguna manera. Esta línea muestra que todavía lo está encontrando de alguna manera:

backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']

Pero no entiendo cómo es eso posible después de que lo hayas eliminado. :confundido:

Ajá, hay algo que nunca supe: los archivos .pkg . ¿Puedes buscar un archivo llamado backports.pkg ?

( backports.pkg probablemente estará en uno de esos directorios site-packages , aunque podría estar en otro lugar de su sistema)

No puedo encontrar backports.pkg en ninguna parte. Usé find ./* -name backports.pkg en la carpeta raíz.

Finalmente, funcionó.

Cambiar el nombre de esa carpeta no funciona, eliminarla sí. Muchas gracias por tu ayuda :)

Extraño, no entiendo por qué eliminarlo sería diferente de simplemente cambiarle el nombre. Me alegro de que lo hayas hecho funcionar, de todos modos.

Tengo problemas similares y la desinstalación/instalación de pip no parece ayudar. Este es el resultado de su secuencia de comandos de depuración (debido a python test.py ):

mod: <module 'backports' (built-in)>

backports.__path__ = ['/home/ihincks/.local/lib/python2.7/site-packages/backports']

-- Found /usr/local/lib/python2.7/dist-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Yo tengo:

$ ls /home/ihincks/.local/lib/python2.7/site-packages/ | grep backports
backports_abc-0.5.dist-info
backports_abc.py
backports_abc.pyc
backports.shutil_get_terminal_size-1.0.0

Eventualmente conseguí que funcionara con el siguiente método de pirateo. Abra (en Linux) /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py y cambie la línea

from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size

a

from shutil_backports import get_terminal_size as _get_terminal_size

Lo mismo otra vez: de alguna manera está encontrando un directorio que no parece estar allí. ¿Puedes buscar un archivo backport.pkg también? Agregaré eso al guión.

Salida del último script:

mod: <module 'backports' (built-in)>

backports.__path__ = ['/home/ihincks/.local/lib/python2.7/site-packages/backports']

-- Found /usr/local/lib/python2.7/dist-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Eso es exasperante; No puedo entender cómo está encontrando la primera ruta ( /home/ihincks/... ).

¿Hay algo más en /home/ihincks/.local/lib/python2.7/site-packages/ que pueda explicar por qué está encontrando backports allí?

No sé exactamente qué estar buscando. Aquí está todo en /home/ihincks/.local/lib/python2.7/site-packages/ :

backports_abc-0.5.dist-info
backports_abc.py
backports_abc.pyc
backports.shutil_get_terminal_size-1.0.0
bleach
bleach-1.5.0.dist-info
certifi
certifi-2016.9.26.dist-info
configparser-3.5.0.dist-info
configparser-3.5.0-nspkg.pth
configparser.py
configparser.pyc
entrypoints-0.2.2.dist-info
entrypoints.py
entrypoints.pyc
enum
enum34-1.1.6.dist-info
functools32
functools32-3.2.3.post2.dist-info
html5lib
html5lib-0.9999999.dist-info
ipykernel
ipykernel-4.5.2.dist-info
ipython_genutils
ipython_genutils-0.1.0.dist-info
ipywidgets
ipywidgets-5.2.2.dist-info
jinja2
Jinja2-2.8.dist-info
jsonschema
jsonschema-2.5.1.dist-info
jupyter_client
jupyter_client-4.4.0.dist-info
jupyter_console
jupyter_console-5.0.0.dist-info
jupyter_core
jupyter_core-4.2.1.dist-info
markupsafe
MarkupSafe-0.23.dist-info
mistune-0.7.3.dist-info
mistune.py
mistune.pyc
nbconvert
nbconvert-5.0.0.dist-info
nbformat
nbformat-4.2.0.dist-info
pandocfilters-1.4.1.dist-info
pandocfilters.py
pandocfilters.pyc
pexpect
pexpect-4.2.1.dist-info
pickleshare-0.7.4.dist-info
pickleshare.py
pickleshare.pyc
prompt_toolkit
prompt_toolkit-1.0.9.dist-info
ptyprocess
ptyprocess-0.5.1.dist-info
pyzmq-16.0.2.dist-info
qtconsole
qtconsole-4.2.1.dist-info
simplegeneric-0.8.1.dist-info
simplegeneric.py
simplegeneric.pyc
singledispatch-3.4.0.3.dist-info
singledispatch_helpers.py
singledispatch_helpers.pyc
singledispatch.py
singledispatch.pyc
six-1.10.0.dist-info
six.py
six.pyc
terminado
terminado-0.6.dist-info
testpath
testpath-0.3.dist-info
tornado
tornado-4.4.2.dist-info
traitlets
traitlets-4.3.1.dist-info
wcwidth
wcwidth-0.1.7.dist-info
widgetsnbextension
widgetsnbextension-1.2.6.dist-info
zmq

¿Qué es backports.shutil_get_terminal_size-1.0.0 y qué hay dentro?

Es un paquete de python, que parece exponer la función única get_terminal_size en backports.shutil_get_terminal_size . Esta carpeta tiene estructura:

./
├── backports
│   ├── __init__.py
│   └── shutil_get_terminal_size
│       ├── get_terminal_size.py
│       └── __init__.py
├── backports.shutil_get_terminal_size.egg-info
│   ├── dependency_links.txt
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   └── top_level.txt
├── HISTORY.rst
├── LICENSE
├── MANIFEST.in
├── PKG-INFO
├── README.rst
├── setup.cfg
├── setup.py
├── test_shutil_get_terminal_size.py
└── tox.ini

Los contenidos de PKG-INFO son:

Metadata-Version: 1.1
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]
License: MIT
Description: backports.shutil_get_terminal_size
        ==================================

        A backport of the `get_terminal_size`_ function from Python 3.3's shutil.

        Unlike the original version it is written in pure Python rather than C,
        so it might be a tiny bit slower.

        .. _get_terminal_size: https://docs.python.org/3/library/shutil.html#shutil.get_terminal_size


        Example usage
        -------------

            >>> from backports.shutil_get_terminal_size import get_terminal_size
            >>> get_terminal_size()
            terminal_size(columns=105, lines=33)



        History
        =======

        1.0.0 (2014-08-19)
        ------------------

        First release.

Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2

Ah, está bien, supongo que desempaquetaste el sdist manualmente en algún momento. ¿Eliminar todo ese directorio ( backports.shutil_get_terminal_size-1.0.0 ) hace alguna diferencia? Supongo que es solo una pista falsa.

De acuerdo, revirtió /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py a su forma original. Se ejecutó ipython y se obtuvo un error ImportError: No module named shutil_get_terminal_size .

Luego movió la carpeta /home/ihincks/.local/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0 a /home/ihincks temporalmente. Ejecuté ipython nuevamente, con el mismo error.

OK, entonces esa carpeta es solo una pista falsa, y todavía no sé cómo está encontrando /home/ihincks/.local/lib/python2.7/site-packages/backports :-(

Hmm, desearía poder ser de más ayuda, solo entiendo a medias lo que está pasando; Las cosas de instalación de python path/library generalmente me confunden.

No hay problema, esto parece ser magia negra bastante bien escondida.

Si alguien puede replicar esto en un sistema en el que no les importa darme acceso ssh para hurgar y tratar de entender lo que está pasando, por favor póngase en contacto.

Yo también tuve el mismo problema... Instalé jupyter recientemente y cuando traté de abrir un archivo de cuaderno de ipython dice que el kernel está muerto con un error de importación para backports.shutil_get_terminal_size. Finalmente, resolví este problema después de actualizar pip, reinstalar jupyter y backports.shutil-get-terminal-size varias veces... y finalmente ejecutar este comando: python2 -m ipykernel install --user. Eso le dio vida a mi núcleo. Referencia: http://askubuntu.com/questions/847263/install-jupyter-for-python-2-7-in-ubuntu-14-04

Así que encontré este problema, y ​​al inspeccionar /usr/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info, encontré solo:

total 28
-rw-r--r--. 1 root root  596 Feb 27 10:42 DESCRIPTION.rst
-rw-r--r--. 1 root root    4 Feb 27 10:42 INSTALLER
-rw-r--r--. 1 root root 1175 Feb 27 10:42 METADATA
-rw-r--r--. 1 root root  701 Feb 27 10:42 metadata.json
-rw-r--r--. 1 root root 1455 Feb 27 10:42 RECORD
-rw-r--r--. 1 root root   10 Feb 27 10:42 top_level.txt
-rw-r--r--. 1 root root  110 Feb 27 10:42 WHEEL

y nada que importar. Esto después de pip --upgrade, pip desinstalar/instalar ipython y así sucesivamente. Entonces parece que pip no estaba instalando el paquete, solo la rueda. Descargué el archivo .tar.gz, lo copié en el directorio de la rueda, lo que solucionó el problema que tenía con ipython. No es la forma correcta de arreglarlo aunque. Estoy ejecutando en RHEL7, por lo que probablemente tenga algo que ver con eso.

El directorio que termina en .dist-info es un archivo de metadatos sobre el paquete instalado, no pretende contener nada que se pueda importar. El código debe estar en un directorio adyacente: /usr/lib/python2.7/site-packages/backports

Tal vez el código pueda ayudarlo: pip install --user backports.shutil_get_terminal_size , solo instálelo para el usuario actual si su ipython está bien para root u otros usuarios.

Hola chicos,

si ustedes han tratado de arreglar esto con

pip install backports.shutil_get_terminal_size

pero no funcionó.

La mejor manera es examinar la ruta de su sistema

import sys
print sys.path

verifique cada ruta si hay un paquete de backports antes de la ruta correcta del modelo ipython y elimínelo directamente.

Tengo una versión muy extraña de este error:

pde<strong i="6">@damoclid</strong>:~$ 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
pde<strong i="7">@damoclid</strong>:~$ python
Python 2.7.13 (default, Jan 19 2017, 14:48:08) 
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> 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
>>> import sys
>>> print [p for p in sys.path if os.path.exists(p + "/backports")]
['/usr/lib/python2.7/dist-packages']
>>> import backports
>>> backports.__path__
['/usr/local/lib/python2.7/dist-packages/backports']
>>> os.path.exists("/usr/local/lib/python2.7/dist-packages/backports")
False
>>> dir(backports)
['__doc__', '__name__', '__path__']
>>> 
pde<strong i="8">@damoclid</strong>:~$ cd /usr/local/bin/
pde<strong i="9">@damoclid</strong>:/usr/local/bin$ cd ..
pde<strong i="10">@damoclid</strong>:/usr/local$ sudo find . -iname \*backports\*
pde<strong i="11">@damoclid</strong>:/usr/local$

Realmente no puedo decir por qué Python no encuentra el sistema operativo nativo empaquetado backports / backports.shutil_get_terminal_size , o por qué encuentra una versión fantasma de backports en /usr/local /lib. Mi sys.path es:

['', '/usr/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages/ropevim-0.7.0-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/pde/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']

pde<strong i="13">@damoclid</strong>:/usr/local$ ls -ld `dpkg -L python-backports-shutil-get-terminal-size `
drwxr-xr-x   26 root root   4096 Mar  7 23:01 /./
drwxr-xr-x   12 root root   4096 Apr  5  2014 /usr/
drwxr-xr-x  201 root root  36864 May 14 22:01 /usr/lib/
drwxr-xr-x   27 root root  20480 Apr  4 15:53 /usr/lib/python2.7/
drwxr-xr-x  296 root root  20480 May 15 18:02 /usr/lib/python2.7/dist-packages/
drwxr-xr-x    3 root root   4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports/
-rw-r--r--    1 root root     75 Aug 19  2014 /usr/lib/python2.7/dist-packages/backports/__init__.py
drwxr-xr-x    2 root root   4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/
drwxr-xr-x    2 root root   4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/
-rw-r--r--    1 root root      1 Jul 28  2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/dependency_links.txt
-rw-r--r--    1 root root   1402 Jul 28  2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/PKG-INFO
-rw-r--r--    1 root root     10 Jul 28  2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/top_level.txt
-rw-r--r--    1 root root   2913 Aug 19  2014 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/get_terminal_size.py
-rw-r--r--    1 root root    338 Aug 19  2014 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/__init__.py
drwxr-xr-x  398 root root  12288 May 14 22:01 /usr/share/
drwxr-xr-x 3114 root root 126976 May 15 18:02 /usr/share/doc/
drwxr-xr-x    2 root root   4096 May 15 17:35 /usr/share/doc/python-backports-shutil-get-terminal-size/
-rw-r--r--    1 root root    333 Jul 28  2016 /usr/share/doc/python-backports-shutil-get-terminal-size/changelog.Debian.gz
-rw-r--r--    1 root root     71 Aug 19  2014 /usr/share/doc/python-backports-shutil-get-terminal-size/changelog.gz
-rw-r--r--    1 root root   1372 Jul 28  2016 /usr/share/doc/python-backports-shutil-get-terminal-size/copyright

Voy a reabrir y etiquetar como 5.4. Creo que deberíamos vender shutil_get_terminal_size para estar seguros.

@Carreau fwiw parece que podría haber un error pip o python aquí, o hice algo tonto, o tal vez ambos. Lo ejecutará más allá de algunas personas más conocedoras de pip.

Otro caso donde encuentra un paquete backports que realmente no está allí. Algunas personas han informado algo así, pero tampoco puedo entender de dónde viene. ¿Podría intentar ejecutar este script ? Y busque archivos .pkg y .pth , que podrían estar afectándolo.

@Carreau en mi sistema, el problema resultó ser la presencia del módulo configparser :

pde<strong i="8">@damoclid</strong>:~/aip$ sudo grep backport `locate *.pth`
/usr/local/lib/python2.7/dist-packages/configparser-3.5.0-nspkg.pth:import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('backports',));ie = os.path.exists(os.path.join(p,'__init__.py'));m = not ie and sys.modules.setdefault('backports', types.ModuleType('backports'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
pde<strong i="9">@damoclid</strong>:~/aip$ pip freeze | grep configp
configparser==3.3.0.post2
pde<strong i="10">@damoclid</strong>:~/aip$ cd /usr/local/lib/
pde<strong i="11">@damoclid</strong>:/usr/local/lib$ find . -iname *configp*
./python2.7/dist-packages/configparser-3.5.0.dist-info
./python2.7/dist-packages/future/moves/configparser.py
./python2.7/dist-packages/future/moves/configparser.pyc
./python2.7/dist-packages/configparser.py
./python2.7/dist-packages/configparser-3.5.0-nspkg.pth
./python2.7/dist-packages/configparser.pyc
pde<strong i="12">@damoclid</strong>:/usr/local/lib$ sudo pip uninstall configparser
Not uninstalling configparser at /usr/lib/python2.7/dist-packages, outside environment /usr
pde<strong i="13">@damoclid</strong>:/usr/local/lib$ sudo rm -rf `find . -iname *configp*`
pde<strong i="14">@damoclid</strong>:/usr/local/lib$ ipython
Python 2.7.13 (default, Jan 19 2017, 14:48:08) 
Type "copyright", "credits" or "license" for more information.

IPython 5.1.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]:                                                                                                                                                                 
Do you really want to exit ([y]/n)? y

Gracias a @erikrose por ayudar a depurar esto.

Cerrando como proveedor #10587 estas cosas e IPython 5.4 deberían lanzarse pronto

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