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
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
, nurpip 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:
ipython
und python-backports-shutil-get-terminal-size
ipython
, jupyter
und backports.shutil_get_terminal_size
pip
und setuptools:
pip install --upgrade setuptools pip`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.
Bitte überprüfen Sie https://github.com/chrippa/backports.shutil_get_terminal_size/issues/9#issuecomment -279021331
@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.
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.
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: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):