Ipython: Нет модуля с именем shutil_get_terminal_size

Созданный на 23 июн. 2016  ·  71Комментарии  ·  Источник: ipython/ipython

Добрый день,
Я участвую в небольшом проекте по созданию ядра поверх ipykernel. Прошло некоторое время с тех пор, как я его коснулся, и сегодня, когда я развернул новую среду разработки, установив Jupyter, я получил следующую трассировку стека при вызове ipykernel:

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

Очевидно, что-то изменилось с момента моего последнего использования IPython и ipykernel. Есть идеи, в чем проблема? Я работаю над ящиком OSX с Python 2.7.10.

Бест, Орелиен

Самый полезный комментарий

Похоже, вы установили IPython, так или иначе не получив его зависимостей. Учитывая, что я вижу яйца, это, вероятно, означает, что у вас слишком старая версия setuptools и, возможно, вы используете easy_install . Перво-наперво, убедитесь, что у вас относительно свежие инструменты pip / setuptools:

pip install --upgrade setuptools pip

Затем попробуйте переустановить IPython с помощью pip (никогда не используйте easy_install, если вы не знаете, что есть веская причина, по которой pip не работает / не может работать. Эти случаи редки):

pip uninstall ipython
pip install ipython

Все 71 Комментарий

Похоже, вы установили IPython, так или иначе не получив его зависимостей. Учитывая, что я вижу яйца, это, вероятно, означает, что у вас слишком старая версия setuptools и, возможно, вы используете easy_install . Перво-наперво, убедитесь, что у вас относительно свежие инструменты pip / setuptools:

pip install --upgrade setuptools pip

Затем попробуйте переустановить IPython с помощью pip (никогда не используйте easy_install, если вы не знаете, что есть веская причина, по которой pip не работает / не может работать. Эти случаи редки):

pip uninstall ipython
pip install ipython

В частности, в этом случае мы добавили зависимость от пакета backports.shutil_get_terminal_size .

Спасибо за быстрый отзыв! Однако тайна становится все глубже. Похоже, что установка Jupyter через pip в командной строке дает другой результат, чем установка Jupyter в качестве требования при использовании setuptools . Хотя первый подход успешен, второй подход для меня не работает. Вот шаги, чтобы воспроизвести эту проблему:

Сначала мы начнем с базового интерпретатора Python 2.7.11, в котором установлено всего три пакета:

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

Если я установлю Jupyter с помощью pip, все будет работать нормально, и я получу следующие пакеты:

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

Однако, если я попытаюсь установить Jupyter в качестве требования для проекта, имея следующий сценарий setup.py (обратите внимание, что я перезапускаюсь из свежего интерпретатора 2.7.11 с тремя базовыми модулями pip , setuptools и virtualenv ):

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

... тогда это не удается:

$ 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

Интересно, что при перечислении пакетов, которые _did_ были установлены, мы видим, что ipython и jupyter-console теперь имеют версии 5.0.0b4 и 5.0.0b1, соответственно, вместо 4.2.0 и 4.1.1, как указано выше. при установке Jupyter с помощью pip . Вот пакеты:

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

Возможно, мне здесь что-то не хватает, но я не знаю, что именно. Любая идея, почему наличие jupyter в качестве зависимости в сценарии setup.py с питанием от

Лучший,
Орелиен

Это говорит о том, что, возможно, при импорте setuptools получает другую версию, чем перечисляет pip (известная ошибка, вызванная старыми setuptools). Что вы получаете от:

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

А также:

python -m site

Также может быть незнакомо то, что если вы используете setuptools в setup.py, вам никогда не следует делать python setup.py install , а только pip install . .

Вот результаты:

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

а также

$ 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

Также может быть незнакомо то, что если вы используете setuptools в setup.py, вам никогда не следует делать python setup.py install , а только pip install . .

Это очень интересно и может быть признаком того, что мне нужно обновить свои знания об инструментах настройки . Тем не менее, это устранило мою проблему! Набрав pip install . в папке, содержащей мой сценарий setup.py выше, я смог успешно установить Jupyter и его зависимости. Спасибо!

В качестве побочного вопроса, почему это не сработало с python setup.py install ? Я не мог найти в Интернете никаких ссылок о том, почему это может быть проблемой.

Бест, Орелиен

python setup.py install делает то же самое, что и easy_install. easy_install делает много неприятных вещей, из-за которых был создан pip. По причинам обратной совместимости python setup.py install с импортированными установочными инструментами всегда будет делать нежелательные вещи, которые делает easy_install , и поэтому никогда не должен вызываться.

Я получаю эту ошибку только в том случае, если я устанавливаю ipython в виртуальном виртуальном сервере, который используется совместно с NFS. Есть какие-нибудь подсказки, почему установка в venv на NFS может вызвать эту проблему?

Не уверен, почему NFS имеет значение, но проверьте версию pip внутри virtualenv, и если она не самая последняя, ​​попробуйте обновить ее:

pip install --upgrade setuptools pip

@takluyver Тот же пип, который отлично устанавливает ipython в "нормальную" файловую систему, не устанавливает его должным образом в NFS. И да, это последняя версия pip.

Странно. Понятия не имею, почему NFS повлияет на это.

Также возникает эта проблема с Python 2.7 с использованием последней версии pip (8.1.2) и последней версии setuptools (25.1.6). Возможно ли, что происходит что-то еще?

Предварительная установка backports.shutil_get_terminal_size с pip была эффективным решением проблемы.

Как упоминалось в другом месте, поместите PR (https://github.com/paulgb/runipy/pull/125) вместе, чтобы показать ошибку backports.shutil_get_terminal_size ошибку entrypoints . Первая фиксация показывает первую ошибку, а вторая фиксация показывает вторую ошибку. В обоих случаях представляют интерес первые 3 построения CI в матрице. Все 3 из них используют setuptools для установки всего.

Похоже, проблема в setuptools. Установка с помощью pip (как всегда должно быть) исправит это .

Однако я не уверен на 100%, что не удается сделать setuptools.

У меня была такая же проблема с установкой IPython (не Jupyter) в новой версии 2.7.3 virtualenv. Похоже, что IPython устанавливается, но не хватает pathlib2 а затем backports.shutil-get-terminal-size . Выполнение pip install для каждой исправленной зависимости, и теперь IPython работает.

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

Сможете ли вы сделать pip --version ? Думаю, у вас слишком старая версия pip.

Да вы правы. Я был на пипе 1.4.1.

Я повторил упражнение после обновления моего virtualenv до pip 8.1.2 и установки IPython 5.0.0 без проблем.

$ 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

У меня тоже проблема с 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

Я попытался сделать sudo pip install --upgrade --force-reinstall ipython (а также переустановить pip и setuptools) безуспешно.

После некоторого расследования я считаю, что сам модуль backports.shutil_get_terminal_size виноват:

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⟫

Интересно, что модуль backports кажется, устанавливает две (немного разные ?!) версии самого себя:

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

и исправление IPython / utils / terminal.py для использования shutil_backports.get_terminal_size работает. Иди разберись.

Привет,

Я получал ту же ошибку в virtualenv. Я использовал pip для установки jupyter.

Я получал
ImportError: нет модуля с именем shutil_get_terminal_size

_ "pip freeze" показал backports.shutil-get-terminal-size == 1.0.0_

Итак, я попробовал обновиться. Он показал:

_pip install --upgrade backports.shutil-get-terminal-size_
Требование уже актуально: backports.shutil-get-terminal-size в /Library/Python/2.7/site-packages

Таким образом, он каким-то образом обращался к моим глобальным библиотекам, а не к моей Venv.

Затем я удалил backports.shutil-get-terminal-size с глобального питона и установил его в свой венев. Теперь все работает нормально.

Я могу воспроизвести это в 100% случаев с этой установкой

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

Я могу воспроизвести это 0% времени с этой установкой

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

Обратите внимание, что с --user инструмент Python командной строки устанавливается в ~/Library/Python/2.7/bin/ipython вместо /usr/local/bin

@AndrewHoos и для меня обе команды правильно получают зависимости. Что вы получите от pip --version ? Его должно быть не меньше 8. Если это не так, убедитесь, что у вас установлены последние версии инструментов настройки и pip:

pip install --upgrade setuptools pip

У меня возникла эта проблема с ноутбуком 4.2.2 и ipython 5.1.0, установленным с conda . Как упоминалось выше, у меня уже установлен shutil_get_terminal_size :

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

Однако в обычной оболочке python команда import backports.shutil_get_terminal_size не работает.

Хорошо, я нашел грубое, но простое решение: удалите и установите снова. Теперь 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

Также столкнулся с этой проблемой
К сожалению, ничего из вышеперечисленного не помогло, но проблема в точности такая, как указано выше:

ImportError: нет модуля с именем shutil_get_terminal_size

Удаление и установка IPython и обратных портов не доставляло радости.

Проблема заключалась в том, что у меня глобально установлен Jupyter и друзья, а глобально установлен shutil_get_terminal_size. т.е. в /Library/Python/2.7/site-packages/shutil_backports/

Однако у меня также был установлен backports.functools_lru_cache локально, это фактически заблокировало импорт shutil_backports.

Чтобы проверить, является ли это проблемой: ls ~ / Library / Python / 2.7 / lib / python / site-packages (В OSX, если вы видите обратные порты папки, это, вероятно, ошибка. Я удалил библиотеку из пользовательской библиотеки и добавил его в системную библиотеку. В любом случае вы не должны смешивать и сопоставлять свои задние порты. Для полноценной работы он должен быть глобальным или локальным.

Та же проблема в Debian Sid (нестабильный) полностью обновлена. Я обновил пип; попытался удалить и установить заново со свежего; и т.д. Ничего не получилось.

# 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

удалить и установить backports.shutil_get_terminal_size снова работает.

+1 в osx. Та же проблема, - Удалить глобальную и установить в virtualenv работает и указывает на локальную.

@Hiczeke Я пробовал это, и это не сработало

После многих попыток последняя команда, которая решила, была обновлена setuptools
Я бы посоветовал:

  • Удалите все системные пакеты, такие как debian ipython и python-backports-shutil-get-terminal-size
  • Удалить с помощью pip: ipython , jupyter и backports.shutil_get_terminal_size
  • Обновите pip и setuptools: pip install --upgrade setuptools pip`
  • Переустановите ipython (и другие) с помощью pip: pip install ipython jupyter

Следующее исправило проблему для меня:
pip удалить backports.shutil_get_terminal_size
pip install backports.shutil_get_terminal_size

@ Пауль-Рихтер @Hiczeke
Большое спасибо!
переустановка backports.shutil_get_terminal_size у меня сработала.

pip install --upgrade --force-переустановить ipython

Это устранило проблему на моем Mac

Я очень запутался:

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

Исправлено для тебя, Ян.

sudo pip удалить backports.shutil_get_ terminal _size

sudo pip install backports.shutil_get_ terminal _size

В среду, 25 января 2017 г., в 12:52 Ян Хинкс [email protected]
написал:

Я очень запутался:

sudo pip удалить backports.shutil_get_window_size

Невозможно удалить требование backports.shutil-get-window-size, не установлено

sudo pip установить backports.shutil_get_window_size

Не удалось найти версию, удовлетворяющую требованию backports.shutil_get_window_size (из версий:)
Не найдено подходящего распределения для backports.shutil_get_window_size

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/ipython/ipython/issues/9656#issuecomment-275197674 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/ATln0kDS_u6PaTk6Qunjc_oEtKCv_-cRks5rV5n7gaJpZM4I9MnS
.

@ Пол-Рихтер А, спасибо :)

Ни одна из деинсталляций / переустановок у меня не сработала. То, что в конечном итоге сработало для меня, было предложено @ternus в комментарии выше: откройте (в Linux) /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py и измените строку

from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size

к

from shutil_backports import get_terminal_size as _get_terminal_size

@ihincks : Ваш комментарий решил мою проблему на osx 😃

Я столкнулся с этой ошибкой сегодня в OS X 10.12.3. Решено следующее:

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

Я не верю, что это ошибка ipython. Рекомендую закрыть.

Я почти уверен, что это не ошибка IPython, но мне хотелось бы понять, что на самом деле идет не так, чтобы мы могли предложить людям лучшие решения, чем переустановка + надеюсь ...

@ pierre-haessig Ты спас мне день. Большое спасибо.

@ihincks Я перепробовал все сообщения, но ни один из них не работал. Только твое сработало. Ты спасатель :)

fix by ihincks также работает на Windows 10

Надеюсь, это кому-нибудь поможет.
в моем случае я обнаружил, что корнем проблемы была неправильная версия ipython:

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

Не знаю, как это могло случиться, потому что у меня вообще нет версии на python3.
Моя проблема была решена, когда я удалил Python и связанные библиотеки.

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

Я переустановил python и убедился, что pip имеет правильную версию и местоположение.
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
pip2 install ipython

@ihincks

Для меня это единственно правильный ответ.

sudo pip удалить backports.shutil_get_terminal_size
sudo pip установить backports.shutil_get_terminal_size

Пипу, скорее всего, не стоит привыкать к sudo.
Использование sudo с pip - вот что приводит к тому, что системы ломаются так, как это
проблема описывает.

Если вам нужно использовать sudo, значит, с вашей системой что-то не так.

M

>

@ihincks На FreeBSD

К вашему сведению, я столкнулся с той же проблемой, но смог обойти проблему shutil_get_terminal_size только с помощью параметра --ignore-installed в pip. Без него пакет не переустановился бы правильно.

pip install --ignore-installed backports.shutil_get_terminal_size

Ответ @AllanDaemon решил проблему для меня!

Столкнулся с аналогичной проблемой, и она была решена путем удаления и повторной установки backports.shutil_get_terminal_size

pip удалить backports.shutil_get_terminal_size
pip install backports.shutil_get_terminal_size

У меня такая же проблема.
Попробовав множество вышеперечисленных решений, я наконец обнаружил, что проблема связана с моей настройкой $ PATH.
Возможно, раньше я использовал опцию pip install --user , так что /home/jin/.local/lib/python2.7 был в моем $ PATH, где существовала другая версия backports .
Я решил эту проблему, удалив папку .local/lib/python2.7 .

Чтобы проверить, есть ли проблема с вами $ PATH, вы можете просто попробовать

import sys
print sys.path

Проблема вызвана наличием «резервных портов» как в «Системном», так и в «Пользовательском» расположении.
В моей macOS я установил shutil_get_terminal_size в систему, но у меня дома был установлен другой пакет. Эта пользовательская папка имеет приоритет, и вы не выполняете поиск в System.
Установите все ваши пакеты python, используя --user.
Если вы застряли, выполните переустановку с помощью --user:
pip install --ignore-installed backports.shutil_get_terminal_size --user
Это, вероятно, должно быть добавлено к какой-то диагностике, так как это меня каждый раз беспокоит

backports должен быть «пакетом пространства имен», которому разрешено устанавливать подпакеты в разных подобных местах. Но, похоже, он работает ненадежно, и я не могу понять, почему. Я не могу воспроизвести его для локальной отладки, и мои попытки отладить его через других людей просто озадачили.

@takluyver Вы видели https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843898 ? Последние 2-3 поста интересны.

К сожалению, это более или менее похоже на то, что я обнаружил - что-то испортило пакет пространства имен backports , но мы не можем понять, что и как. Debian совершенно справедливо сказал, что это не их проблема, если пакеты, установленные pip, что-то ломают.

Я прокомментировал здесь https://github.com/chrippa/backports.shutil_get_terminal_size/issues/9#issuecomment -279021331 и упомянул выше при обнаружении разницы между установкой колеса и не-колеса (небинарной) через pip, заключается в том, что что-нибудь актуальное?

А как насчет вендинга в качестве запасного варианта для следующей версии IPython?

Можно ли это перенести в shutil CPython?

Можно ли это перенести в shutil CPython?

Скорее всего, нет, мы уже не используем пакет backport в IPython 6.0 / master, он уже есть во всех поддерживаемых нами конюшнях CPython, и проблема возникает только потому, что мы используем пакет backport в 2.7. поскольку этого нет в стандартном CPython 2.7.

Понятно. Спасибо @Carreau. Рад, что это будет временная проблема.

Удаление глобальной установки, удаление в virtualenv и переустановка в virtualenv устранили проблему для меня.

Что вам нужно, просто набрав следующие команды:

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

Раньше у меня была такая же проблема, и это решило ее.

Привет
такая же проблема на Ubuntu 17.10 с ipython2.
Нет проблем с python3

ИСПРАВЛЕНИЕ: 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 -unghi, пожалуйста, не советуйте людям использовать sudo pip , это в конечном итоге приведет к более странному выходу из строя вашей системы. Пип будет бороться с системным пакетным менеджером над некоторыми файлами.

Это то же самое, что вынуть батарею из вашего будильника угарного газа, потому что он регулярно будит вас по ночам. Что-то не так с вашим обогревателем; вам нужно правильное исправление.

Спасибо @Carreau
Я поправлю свой ответ после того, как потушу огонь в своем доме.

Ps исправьте пожалуйста "вереск" -> деб зависимости

Самое простое решение - это, вероятно, установить более новую версию IPython с pip install --user ipython (флаг --user означает, что sudo не требуется). Мы уже работали над этой проблемой в IPython, но мы не можем контролировать пакеты Debian, и пользователи, устанавливающие через apt, получают устаревшую версию IPython.

Если кто-то сталкивается с той же проблемой с Cygwin и python2, решение - запустить Cygwin setup.exe (или один из apt-cyg utls) и установить python2-backports.shutil_get_terminal_size . По умолчанию это не запускается как зависимость, поэтому его необходимо установить вручную.

ipython3 работает нормально из коробки.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги