Ipython: Kein Modul namens "shutil_get_terminal_size"

Erstellt am 23. Juni 2016  ·  71Kommentare  ·  Quelle: ipython/ipython

Guten Tag,
Ich trage zu einem kleinen Projekt bei, um einen Kernel auf ipykernel zu erstellen. Es ist eine Weile her, seit ich es berührt habe, und heute, als ich eine neue Entwicklungsumgebung durch die Installation von Jupyter bereitgestellt habe, habe ich beim Aufruf von ipykernel den folgenden Stack-Trace erhalten:

  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

Offensichtlich hat sich seit meiner letzten Verwendung von IPython und ipykernel etwas geändert. Irgendeine Idee, was das Problem ist? Ich arbeite an einer OSX-Box mit Python 2.7.10.

Beste, Aurélien

Hilfreichster Kommentar

Sieht so aus, als hätten Sie IPython installiert, ohne seine Abhängigkeiten irgendwie zu erhalten. Da ich Eier sehe, bedeutet dies wahrscheinlich, dass Sie eine zu alte Version von setuptools haben und möglicherweise easy_install . Stellen Sie zunächst sicher, dass Sie über relativ aktuelle Pip/Setuptools verfügen:

pip install --upgrade setuptools pip

Versuchen Sie dann, IPython mit pip neu zu installieren (verwenden Sie niemals easy_install, es sei denn, Sie wissen, dass es einen guten Grund gibt, warum pip nicht funktioniert. Diese Fälle sind selten):

pip uninstall ipython
pip install ipython

Alle 71 Kommentare

Sieht so aus, als hätten Sie IPython installiert, ohne seine Abhängigkeiten irgendwie zu erhalten. Da ich Eier sehe, bedeutet dies wahrscheinlich, dass Sie eine zu alte Version von setuptools haben und möglicherweise easy_install . Stellen Sie zunächst sicher, dass Sie über relativ aktuelle Pip/Setuptools verfügen:

pip install --upgrade setuptools pip

Versuchen Sie dann, IPython mit pip neu zu installieren (verwenden Sie niemals easy_install, es sei denn, Sie wissen, dass es einen guten Grund gibt, warum pip nicht funktioniert. Diese Fälle sind selten):

pip uninstall ipython
pip install ipython

Speziell in diesem Fall haben wir eine Abhängigkeit vom Paket backports.shutil_get_terminal_size hinzugefügt.

Danke für dein schnelles Feedback! Das Geheimnis vertieft sich jedoch. Es sieht so aus, als ob die Installation von Jupyter über pip auf der Befehlszeile zu einem anderen Ergebnis führt, als wenn Jupyter als Voraussetzung für die Verwendung von setuptools festgelegt wird . Während der erste Ansatz erfolgreich ist, scheitert der zweite Ansatz für mich. Hier sind die Schritte, um dieses Problem zu reproduzieren:

Zuerst beginnen wir mit einem Barebone-Python 2.7.11-Interpreter, bei dem nur drei Pakete installiert sind:

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

Wenn ich Jupyter mit pip installiere, funktioniert alles einwandfrei und ich erhalte die folgenden Pakete:

$ 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)

Wenn ich jedoch versuche, Jupyter als Voraussetzung für ein Projekt zu installieren, indem ich das folgende setup.py Skript verwende (beachte, dass ich von einem neuen 2.7.11-Interpreter mit den drei Basismodulen pip neu starte, setuptools und virtualenv ):

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

... dann schlägt es fehl:

$ 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

Interessanterweise können wir beim Auflisten der Pakete, die _did_ installiert wurden, sehen, dass ipython und jupyter-console jetzt Version 5.0.0b4 bzw. 5.0.0b1 sind, anstatt wie oben 4.2.0 und 4.1.1 wenn Sie Jupyter mit pip installieren. Hier die Pakete:

$ 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)

Vielleicht übersehe ich hier etwas, aber ich bin mir nicht sicher, was. Irgendeine Idee, warum jupyter als Abhängigkeit in einem setuptools- powered setup.py Skript hier fehlschlägt?

Am besten,
Aurélien

Das deutet darauf hin, dass setuptools beim Import möglicherweise eine andere Version erhält als pip auflistet (ein bekannter Fehler, der durch alte Setuptools verursacht wird). Was bekommen Sie von:

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

Und auch:

python -m site

Es ist auch etwas, das vielleicht nicht bekannt ist, dass Sie, wenn Sie setuptools in setup.py verwenden, niemals python setup.py install , nur pip install . tun sollten.

Hier die Ausgaben:

$ 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')

und

$ 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

Es ist auch etwas, das vielleicht nicht bekannt ist, dass Sie, wenn Sie setuptools in setup.py verwenden, niemals python setup.py install , nur pip install . tun sollten.

Dies ist sehr interessant und kann ein Zeichen dafür sein, dass ich mein Wissen über setuptools aktualisieren pip install . in den Ordner mit meinem obigen setup.py Skript konnte ich Jupyter und seine Abhängigkeiten erfolgreich installieren. Vielen Dank!

Als Nebenfrage, warum hat es mit python setup.py install nicht funktioniert? Ich konnte im Internet keinen Hinweis finden, warum dies ein Problem sein könnte.

Beste, Aurélien

python setup.py install macht dasselbe wie easy_install. easy_install macht viele unangenehme Dinge, die der Grund für die Entwicklung von pip sind. Aus Gründen der Abwärtskompatibilität wird python setup.py install mit importierten Setuptools immer die unerwünschten Dinge tun, die easy_install tut, und sollte daher niemals aufgerufen werden.

Ich erhalte diese Fehlermeldung nur, wenn ich ipython in einem virtualvenv installiere, das auf NFS geteilt wird. Irgendwelche Hinweise, warum die Installation in einem Venv auf NFS dieses Problem verursachen kann?

Ich bin mir nicht sicher, warum NFS einen Unterschied machen würde, aber überprüfen Sie die Version von pip in der virtualenv, und wenn es nicht die neueste ist, versuchen Sie, sie zu aktualisieren:

pip install --upgrade setuptools pip

@takluyver Das gleiche pip, das ipython im "normalen" Dateisystem installiert, installiert es nicht richtig auf NFS. Und ja, es ist die neueste Version von pip.

Bizarr. Keine Ahnung, warum NFS das beeinflussen würde.

Dieses Problem tritt auch mit Python 2.7 unter Verwendung der neuesten pip (8.1.2) und neuesten setuptools (25.1.6) auf. Ist es nicht möglich, dass da noch etwas passiert?

Die vorherige Installation von backports.shutil_get_terminal_size mit pip war eine effektive Lösung für das Problem.

Wie an anderer Stelle erwähnt, fügen Sie PR ( https://github.com/paulgb/runipy/pull/125 ) zusammen, um den backports.shutil_get_terminal_size Fehler und den entrypoints Fehler anzuzeigen. Der erste Commit zeigt den ersten Fehler und der zweite Commit den zweiten Fehler. In beiden Fällen sind die ersten 3 CI-Builds in der Matrix von Interesse. Alle 3 verwenden setuptools , um alles zu installieren.

Sieht nach einem Problem in den Setuptools aus. Die Installation mit pip (wie immer durchgeführt werden sollte) wird es beheben .

Ich bin mir jedoch nicht 100% sicher, was setuptools nicht macht.

Ich hatte gerade das gleiche Problem bei der Installation von IPython (nicht Jupyter) in einer neuen 2.7.3 Virtualenv. IPython schien sich zu installieren, aber es fehlten pathlib2 und dann backports.shutil-get-terminal-size . Ein pip install auf jedem behoben die Abhängigkeiten und IPython funktioniert jetzt.

$ 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]: 

Kannst du pip --version ? Ich würde vermuten, dass Sie eine zu alte Version von Pip haben.

Ja du hast Recht. Ich war auf Pip 1.4.1.

Ich habe die Übung wiederholt, nachdem ich mein virtualenv auf pip 8.1.2 aktualisiert und IPython 5.0.0 problemlos installiert hatte.

$ 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

Ich habe dieses Problem auch unter 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

Ich habe versucht, sudo pip install --upgrade --force-reinstall ipython (sowie die Neuinstallation von Pip und Setuptools) ohne Erfolg zu tun.

Nach einigen Nachforschungen glaube ich, dass das Modul backports.shutil_get_terminal_size selbst schuld ist:

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⟫

Interessanterweise scheint das Modul backports zwei (etwas unterschiedliche?!) Versionen von sich selbst zu installieren:

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

und das Patchen von IPython/utils/terminal.py, um Shutil_backports.get_terminal_size zu verwenden, funktioniert. Stelle dir das vor.

Hallo,

Ich habe den gleichen Fehler in virtualenv bekommen. Ich hatte pip verwendet, um Jupyter zu installieren.

ich bekam
ImportError: Kein Modul namens Shutil_get_terminal_size

_"Pip Freeze" zeigte backports.shutil-get-terminal-size==1.0.0_

Also habe ich ein Upgrade versucht. Es zeigte:

_pip install --upgrade backports.shutil-get-terminal-size_
Anforderung bereits aktuell: backports.shutil-get-terminal-size in /Library/Python/2.7/site-packages

Es hat also irgendwie auf meine globalen Bibliotheken zugegriffen und nicht auf die in meinem venv.

Dann habe ich backports.shutil-get-terminal-size aus dem globalen Python deinstalliert und in meinem venev installiert. Jetzt funktioniert es gut.

Ich kann dies mit dieser Installation zu 100% reproduzieren

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

Ich kann dies mit dieser Installation 0% der Zeit reproduzieren

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

Beachten Sie, dass mit --user das Befehlszeilen-Python-Tool unter ~/Library/Python/2.7/bin/ipython anstelle von /usr/local/bin installiert wird

@AndrewHoos und für mich erhalten beide Befehle die Abhängigkeiten korrekt. Was bekommen Sie von pip --version ? Es sollte mindestens 8 sein. Wenn dies nicht der Fall ist, stellen Sie sicher, dass Ihre Setuptools und Ihr Pip auf dem neuesten Stand sind:

pip install --upgrade setuptools pip

Ich habe dieses Problem mit Notebook 4.2.2 und ipython 5.1.0 mit conda installiert. Wie oben erwähnt, habe ich shutil_get_terminal_size bereits installiert:

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

In der regulären Python-Shell schlägt der Befehl import backports.shutil_get_terminal_size fehl.

Ok, ich habe eine grobe, aber einfache Lösung gefunden: Deinstallieren und erneut installieren. Jetzt funktioniert ipython....

$ 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

Ist auch auf dieses Problem gestoßen
Leider hat oben nichts geholfen, aber das Problem ist genau wie oben beschrieben:

ImportError: Kein Modul namens Shutil_get_terminal_size

Das Deinstallieren und Installieren von IPython und Back-Ports war keine Freude.

Das Problem war, dass ich Jupyter & Freunde global installiert habe und Shutil_get_terminal_size global installiert habe. dh in /Library/Python/2.7/site-packages/shutil_backports/

Allerdings hatte ich auch backports.functools_lru_cache lokal installiert, dies blockierte tatsächlich den Import von Shutil_backports.

Um zu testen, ob dies das Problem ist: ls ~/Library/Python/2.7/lib/python/site-packages (Wenn Sie unter OSX einen Ordner Backports sehen, ist das wahrscheinlich schuld. Ich habe die Bibliothek aus der Benutzerbibliothek deinstalliert und Es wurde in die Systembibliothek hinzugefügt. So oder so können Sie Ihre Back-Ports nicht mischen und anpassen. Es muss global oder lokal sein, um vollständig zu funktionieren.

Gleiches Problem in Debian Sid (Unstable) vollständig aktualisiert. Ich habe pip aktualisiert; versucht zu deinstallieren und neu zu installieren; usw. Nichts hat funktioniert.

# 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

deinstallieren und installieren backports.shutil_get_terminal_size funktioniert wieder.

+1 im OSX. Gleiches Problem, - Deinstallieren Sie global und installieren Sie in virtualenv funktioniert und zeigt auf local.

@Hiczeke Ich habe das versucht und es hat nicht funktioniert

Nachdem ich viele Dinge ausprobiert hatte, war der letzte Befehl, der gelöst wurde, die Aktualisierung von setuptools
Ich würde empfehlen:

  • Deinstallieren Sie alle Systempakete, wie das Debian ipython und python-backports-shutil-get-terminal-size
  • Deinstallieren mit pip: ipython , jupyter und backports.shutil_get_terminal_size
  • Upgrade von pip und setuptools: pip install --upgrade setuptools pip`
  • Installieren Sie ipython (und andere) mit pip neu: pip install ipython jupyter

Folgendes hat das Problem bei mir behoben:
pip deinstallieren backports.shutil_get_terminal_size
pip install backports.shutil_get_terminal_size

@Paul-Richter @Hiczeke
Danke vielmals!
Die Neuinstallation von "backports.shutil_get_terminal_size" hat bei mir gut funktioniert.

pip install --upgrade --force-reinstall ipython

Dies hat das Problem auf meinem Mac behoben

Ich bin ziemlich verwirrt:

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

Für dich behoben, Ian.

sudo pip deinstallieren backports.shutil_get_ terminal _size

sudo pip install backports.shutil_get_ terminal _size

Am Mittwoch, 25. Januar 2017 um 12:52 Uhr Ian Hincks [email protected]
schrieb:

Ich bin ziemlich verwirrt:

sudo pip deinstallieren backports.shutil_get_window_size

Anforderung backports.shutil-get-window-size kann nicht deinstalliert werden, nicht installiert

sudo pip install backports.shutil_get_window_size

Es konnte keine Version gefunden werden, die die Anforderung erfüllt backports.shutil_get_window_size (von Versionen: )
Keine passende Distribution für backports.shutil_get_window_size gefunden


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/ipython/ipython/issues/9656#issuecomment-275197674 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/ATln0kDS_u6PaTk6Qunjc_oEtKCv_-cRks5rV5n7gaJpZM4I9MnS
.

@Paul-Richter Ah, danke :)

Bei mir hat nichts von der Deinstallation/Neuinstallation funktioniert. Was schließlich für mich funktionierte, wurde von @ternus in einem Kommentar oben vorgeschlagen: /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py und ändere die Zeile

from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size

zu

from shutil_backports import get_terminal_size as _get_terminal_size

@ihincks : Dein Kommentar hat mein Problem auf osx gelöst

Ich bin heute auf diesen Fehler unter OS X 10.12.3 gestoßen. Folgendes gelöst:

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

Ich glaube nicht, dass dies ein Ipython-Fehler ist. Schließen empfehlen.

Ich bin mir ziemlich sicher, dass es sich nicht um einen IPython-Fehler handelt, aber ich wünschte, ich könnte herausfinden, was tatsächlich schief läuft, damit wir den Leuten bessere Lösungen anbieten können als Neuinstallation + Hoffnung ...

@pierre-haessig Du rettest meinen Tag.Vielen Dank.

@ihincks Ich habe alle Beiträge ausprobiert, aber keiner hat funktioniert. Nur deine hat funktioniert. Du bist ein Lebensretter :)

Fix von ihincks funktioniert auch unter Windows 10

Ich hoffe es kann jemandem helfen.
In meinem Fall habe ich festgestellt, dass die Ursache des Problems eine falsche Ipython-Version war:

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

Ich weiß nicht, wie es passieren kann, weil ich überhaupt keine Python3-Version habe.
Mein Problem wurde gelöst, als ich Python deinstalliert und zugehörige Bibliotheken entfernt habe

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

Ich habe Python neu installiert und sichergestellt, dass pip die richtige Version und Position hat.
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
pip2 install ipython

@ihincks

Das ist für mich die einzig richtige Antwort.

sudo pip deinstallieren backports.shutil_get_terminal_size
sudo pip install backports.shutil_get_terminal_size

Pip sollte sich wahrscheinlich nicht an sudo gewöhnen.
Die Verwendung von sudo mit pip führt dazu, dass Systeme auf diese Weise beschädigt werden
Problem beschreibt.

Wenn Sie sudo verwenden müssen, stimmt etwas mit Ihrem System nicht.

m

>

@ihincks Auf FreeBSD hat nur deine Lösung funktioniert! Danke vielmals!

Zu Ihrer Information, ich bin auf das gleiche Problem gestoßen, konnte aber das Problem shutil_get_terminal_size umgehen, indem ich die Option --ignore-installed in pip verwendete. Ohne sie würde das Paket nicht korrekt neu installiert.

pip install --ignore-installed backports.shutil_get_terminal_size

Die Antwort von @AllanDaemon hat das Problem für mich gelöst!

Hatte ein ähnliches Problem und es wurde durch Deinstallation und Neuinstallation von backports.shutil_get_terminal_size gelöst

pip deinstallieren backports.shutil_get_terminal_size
pip install backports.shutil_get_terminal_size

Ich hatte das gleiche Problem.
Nachdem ich viele der oben genannten Lösungen ausprobiert hatte, stellte ich schließlich fest, dass das Problem auf meine $PATH-Einstellung zurückzuführen ist.
Vielleicht hatte ich zuvor die Option pip install --user , sodass /home/jin/.local/lib/python2.7 in meinem $PFAD war, wo eine andere Version von backports existierte.
Ich habe dieses Problem gelöst, indem ich den Ordner .local/lib/python2.7 gelöscht habe.

Um zu testen, ob es ein Problem mit Ihrem $PATH ist, können Sie es einfach versuchen

import sys
print sys.path

Das Problem wird dadurch verursacht, dass "Backports" sowohl an den Speicherorten "System" als auch "Benutzer" vorhanden sind.
Auf meinem macOS hatte ich Shutil_get_terminal_size im System installiert, aber ich hatte ein anderes Paket in meinem Benutzerhaus installiert. Dieser Benutzerordner hat Vorrang und Sie suchen nicht in System.
Installieren Sie alle Ihre Python-Pakete mit --user is wise.
Wenn Sie feststecken, erzwingen Sie eine Neuinstallation mit --user:
pip install --ignore-installed backports.shutil_get_terminal_size --user
Dies sollte wahrscheinlich zu einigen Diagnosen hinzugefügt werden, da es mich jedes Mal nervt

backports soll ein 'Namespace-Paket' sein, das Unterpakete an verschiedenen Orten wie diesem installiert haben darf. Aber es scheint nicht zuverlässig zu funktionieren, und ich kann nicht herausfinden, warum. Ich kann es nicht reproduzieren, um es lokal zu debuggen, und meine Versuche, es durch andere Leute zu debuggen, waren nur rätselhaft.

@takluyver Hast du https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843898 gesehen? Interessant sind die letzten 2-3 Beiträge.

Leider scheint das mehr oder weniger so zu sein, wie ich es gefunden habe - etwas bringt das backports Namespace-Paket durcheinander, aber wir können nicht herausfinden, was oder wie. Debian sagte zu Recht, dass es nicht ihr Problem sei, wenn pip-installierte Pakete Dinge kaputt machen.

Ich habe hier https://github.com/chrippa/backports.shutil_get_terminal_size/issues/9#issuecomment -279021331 kommentiert und oben darauf verwiesen, dass ich einen Unterschied zwischen der Rad- und der Nicht-Rad- (nicht-binären) Installation über Pip gefunden habe, ist das? irgendwas relevantes?

Wie sieht es mit Vendoring als Fallback für die nächste Version von IPython aus?

Ist das etwas, das in CPythons Shutil zurückportiert werden könnte?

Ist das etwas, das in CPythons Shutil zurückportiert werden könnte?

Wahrscheinlich nein, wir verwenden das Paket backport bereits nicht auf IPython 6.0/master, dies ist bereits in allen von uns unterstützten CPython-Ställen vorhanden, und das Problem tritt nur auf, weil wir das Paket backport auf 2.7 verwenden da dies nicht im Standard-CPython 2.7 enthalten ist.

Ich habs. Danke @Carreau. Gut, dass es sich nur um ein vorübergehendes Problem handelt.

Das Löschen der globalen Installation, die Deinstallation in virtualenv und die Neuinstallation in virtualenv haben das Problem für mich behoben.

Was Sie brauchen, geben Sie einfach die folgenden Befehle ein:

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

Ich hatte früher das gleiche Problem, und das löst es.

Hi
gleiches Problem unter Ubuntu 17.10 mit ipython2.
Kein Problem mit Python3

FIX: 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 bitte raten Sie den Leuten nicht, sudo pip , das wird Ihr System auf lange Sicht nur auf seltsamere Weise zerstören. Pip wird mit dem Systempaket-Manager um einige Dateien kämpfen.

Das entspricht dem Entfernen der Batterie aus Ihrem Kohlenmonoxidmelder, da er Sie nachts regelmäßig weckt. Mit Ihrer Heizung stimmt etwas nicht; Sie brauchen eine richtige Lösung.

Danke @Carreau
Ich werde meine Antwort korrigieren, nachdem ich das Feuer bei mir zu Hause gelöscht habe.

Ps bitte beheben Sie das "Heidekraut" -> Deb-Abhängigkeiten

Die einfachste Lösung besteht wahrscheinlich darin, eine neuere Version von IPython mit pip install --user ipython zu installieren (das Flag --user bedeutet, dass kein sudo benötigt wird). Wir haben dieses Problem bereits in IPython umgangen, aber wir können die Debian-Pakete nicht kontrollieren, und Benutzer, die über apt installieren, erhalten eine veraltete Version von IPython.

Falls jemand auf das gleiche Problem mit Cygwin und Python2 stößt, besteht die Lösung darin, Cygwin setup.exe (oder eine der apt-cyg-utls) auszuführen und python2-backports.shutil_get_terminal_size installieren. Dies wird standardmäßig nicht als Abhängigkeit ausgelöst, daher muss es manuell installiert werden.

ipython3 ist sofort einsatzbereit.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen