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

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

Обновление от @carreau :
Повторное открытие, пометка 5.4, мы должны поставщика Shutil_get_terminal_size.


После установки ipython sudo apt-get install ipython-notebook , ipython появляется следующая ошибка:

jiangyuping@Lenovo :~$ ipython
Traceback (последний последний вызов):
Файл "/usr/local/bin/ipython", строка 4, в
из IPython импортировать start_ipython
Файл "/usr/local/lib/python2.7/dist-packages/IPython/init .py ", строка 48, в
из .core.application импортировать приложение
Файл "/usr/local/lib/python2.7/dist-packages/IPython/core/application.py", строка 25, в
из версии импорта IPython.core, обработчик сбоев
Файл "/usr/local/lib/python2.7/dist-packages/IPython/core/crashhandler.py", строка 28, в
из IPython.core импортировать ultratb
Файл "/usr/local/lib/python2.7/dist-packages/IPython/core/ultratb.py", строка 128, в
из IPython.utils.terminal импортировать get_terminal_size
Файл "/usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py", строка 22, в
из backports.shutil_get_terminal_size импортировать get_terminal_size как _get_terminal_size
ImportError: нет модуля с именем Shutil_get_terminal_size

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

@oshow это _должно_ работать в целом:

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

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

У вас есть более новая копия IPython, установленная вне apt, и для нее требуется пакет backports.shutil_get_terminal_size . Используйте pip , чтобы установить это.

@takluyver После pip install ipython появляется

jiangyuping@Lenovo :~/ipython$ pip установить ipython
Требование уже выполнено (используйте --upgrade для обновления): ipython в /usr/local/lib/python2.7/dist-packages

затем ipython появляется

jiangyuping@Lenovo :~/ipython$ ipython
Traceback (последний последний вызов):
Файл "/usr/local/bin/ipython", строка 4, в
из IPython импортировать start_ipython
Файл "/home/jiangyuping/ipython/IPython/ init .py", строка 48, в
из .core.application импортировать приложение
Файл "/home/jiangyuping/ipython/IPython/core/application.py", строка 25, в
из версии импорта IPython.core, обработчик сбоев
Файл "/home/jiangyuping/ipython/IPython/core/crashhandler.py", строка 28, в
из IPython.core импортировать ultratb
Файл "/home/jiangyuping/ipython/IPython/core/ultratb.py", строка 128, в
из IPython.utils.terminal импортировать get_terminal_size
Файл "/home/jiangyuping/ipython/IPython/utils/terminal.py", строка 22, в
из backports.shutil_get_terminal_size импортировать get_terminal_size как _get_terminal_size
ImportError: нет модуля с именем Shutil_get_terminal_size

Я имел в виду:

pip install backports.shutil_get_terminal_size

Однако, если это не связано с IPython, это, вероятно, означает, что у вас старая версия pip. Чтобы обновить его:

pip install --upgrade setuptools pip

Спасибо, успешно установил.

Я пробовал много вещей. Последним, что решилось, было обновление setuptools . Я также обновил pip и переустановил ipython и т. д.

Спасибо! Это не сработало для меня. Но это дало мне идею... Я сделал pip install --upgrade с whl файлом backports.shutil_get_terminal_size

До этого простая установка pip приводила к «уже выполненным требованиям» и т. д.
Теперь я могу запустить GraphLab Create от Turi :)

@jnault У меня та же проблема, потому что я пытался установить GraphLab Create от Turi. Какие именно команды вы использовали?

Я точно не помню, но помню, что это довольно просто. Мои шаги:
1) Найдите в Google этот файл с расширением .whl и
2) поиск в Google Как установить файл Whl
хм. хорошо, это выглядит язвительно или что-то в этом роде. Я искренен и пытаюсь помочь. Но это буквально то, что я сделал. Почти уверен, что файл пришел из pypi. Я предполагаю, что файл whl может установить Anything, поэтому я убедился, что он получен из надежного источника.
Я предполагаю, что это была команда: pip install --upgrade backports.shutil_get_terminal_size.whl

@oshow это _должно_ работать в целом:

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

^ У Минка есть лучший совет.
Minrk, вы написали «если Пип думает, что он у вас уже есть, но, похоже, это не так». Итак, возможно, файл был запланирован при начальной установке Python, но затем пропущен? Таким образом, он указан как присутствующий, но на самом деле его нет?

У меня была такая же проблема при попытке установить Graphlab Create. решение minrk исправило это и для меня.

У @minrk было рабочее решение для меня, просто удаление с последующей установкой сработало для меня.
Вот что я сделал.

удалите, если pip думает, что он у вас уже есть, но, похоже, это не так:

pip удалить backports.shutil_get_terminal_size

установите его снова без актуального пипа:

pip install --upgrade backports.shutil_get_terminal_size

удалить <path-to>/Python/2.7/site-packages/backports/__init__.*

@bevice А потом?

До сих пор я не смог исправить ни одно из предложений в этой или любой другой теме.

Если я побегу

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

оно работает. Но запуск ноутбука ipython или jupyter дает мне ту же ошибку, что он не находит Shutil_get_terminal_size

Я думаю, это означает, что у вас где-то установлен еще один пакет backports.<something> , который испортил механизм пакета пространства имен. Вероятно, вам нужно будет найти это и удалить. Попробуйте pip list , чтобы увидеть все установленные пакеты.

@takluyver Спасибо за быстрый ответ.

Вот что я нашел:

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

Что я могу сделать сейчас?

Удалите backports.ssl-match-hostname и backports.shutil-get-terminal-size и установите их снова.

Нужно ли мне «перезапускать» анаконду или что-то еще, чтобы изменения вступили в силу? Удаление обоих пакетов, которые вы упомянули, и их переустановка не сработали.

Нет, перезапуска нет. Однако, чтобы убедиться, что после их удаления попробуйте удалить их снова. Повторяйте, пока программа не найдет ничего для удаления. Иногда есть копии в разных местах.

Если это все еще не работает, попробуйте удалить backports.ssl-match-hostname и оставить его неустановленным (по крайней мере, пока вы не найдете то, что в нем нуждается...)

Хорошо. Я пробовал все, что вы сказали, но ничего не работает. Каковы мои варианты? Проблема началась, когда я установил pymc3. Другое дело, что я изменил некоторые скрипты, чтобы добавить некоторые модули в набор инструментов nipype. Мне просто удалить все и установить заново? Надеюсь, это будет крайняя мера.

Что вы получите, попробовав это на том же Python, с которым вы пытаетесь запустить IPython:

import backports
print(backports)

Я запускал его с установленными бэкпортами:

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

Затем удалил их и снова запустил:

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

Так что, по-видимому, у меня где-то есть встроенные пакеты, которые все портят. Но я понятия не имею, как их найти. Даже если я их найду, я не смогу ничего изменить, так как у меня нет root-прав.

Есть ли что-нибудь еще в папке, которую он вам там показал ( /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/ )?

Нет, теперь, когда он удален, папка полностью отсутствует. Как и папка
../site-packages/backports.shutil-get-terminal-size-1.0.0 , который раньше был там, когда он был установлен.

Можете ли вы проверить backports.__path__ в Python?

Без установленных бэкпортов:
['/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']

Это тот же каталог, что и раньше? Точно отсутствует? Я не понимаю, как он мог найти этот путь, если там ничего нет.

Я искал все возможные бэкпорты в каталоге anaconda2_serverwide. Я не уверен, что все это значит.
Вот что я нашел:

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

Вы перезапустили Python после удаления backports ? Если нет, можете ли вы перезапустить Python и снова проверить backports.__path__ ? Я не знаю, как он мог бы определить этот путь, если там нет файла.

Как перезапустить питон?

Я также пробовал следующее:

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

Поэтому я использовал conda для удаления backports.shutil_get_terminal_size:
> conda uninstall backports.shutil_get_terminal_size

Когда я сейчас пытаюсь импортировать backports.shutil_get_terminal_size в python, он его не находит. Поэтому я удалил ipython и jupyter и переустановил ipython через conda, который также установил jupyter и backports.shutil_get_terminal_size. Однако это _по-прежнему_ не работает! Я в тупике.

Затем я удалил установки через conda и переустановил их через pip. Это _до сих пор_ не работает....

Как перезапустить питон?

Закройте его ( exit() ), а затем запустите снова.

Проверено на наличие бэкпортов:

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

Запустил python после перезапуска:

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

Пытался обновить:

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

Я не понимаю. Что еще я могу сделать? Могу ли я отредактировать «terminal.py», чтобы указать правильное направление?

Если вы удалите все пакеты бэкпортов, перезапустите Python и проверьте:

import backports
backports.__path__

Что вы получаете?

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

Установлено ли что-нибудь в прежнем каталоге (под /home/raid2 )?

Это каталог, в котором хранятся общесистемные пакеты python и ipython. Однако я не использую их, так как использую локальную установку anaconda. И не должно мешать. По правде говоря, в каталоге /home/raid2... нет пакета backports.shutil_get_terminal_size.

Когда я запускаю общесистемную установку (которая имеет более старую версию ipython), она работает нормально. Но когда я запускаю свою среду с более новой установкой anaconda с
export PATH="/nobackup/archimedes1/Glad/anaconda2_serverwide/bin:$PATH" не может найти функцию размера окна.

Я сделал скрипт, чтобы попытаться отладить это. Можете ли вы запустить его и опубликовать вывод?

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

Хорошо!!!1

Это то, что я сделал, чтобы как-то заставить его работать.
Удалены ipython и jupyter и backports.shutil_get_window_size как с conda, так и с pip:

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

Я убедился, что от упаковки ничего не осталось. Затем я переустановил только ipython с conda:

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

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

The following NEW packages will be INSTALLED:

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

Proceed ([y]/n)? y

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

И теперь это работает!!! Спасибо за щедрое время @takluyver !

Вот вывод вашего скрипта:

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

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

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


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

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

У меня такая же проблема. Пробовал все с самого начала, все удалял и устанавливал. Также запустил скрипт, которым вы поделились выше -
Вот результат:

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

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

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


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

Можете ли вы помочь мне с этим? Однако я не хочу использовать conda.

Спасибо!

Есть ли что-нибудь в /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports ? Может попробовать удалить/переименовать?

Есть ли что-нибудь в /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports? Может попробовать удалить/переименовать?

Пробовал, все та же проблема.

Я внес изменения в сценарий отладки , вы можете попробовать получить его снова и запустить заново.

Вот вывод -

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

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

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


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

Вы перезапустили Python после удаления/переименования этого каталога? Как-то все равно находит.

Я запускаю скрипт с помощью команды «python debug_namespace_pkg.py». И я перезапустил терминал, прежде чем сделать это.

А /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports точно не существует? Как и раньше, я не понимаю, как он получает ссылку на папку, которой, по-видимому, нет.

Да, я переименовал его в указанном вами месте. Вы уверены, что не имеете в виду /usr/local/lib/python2.7/site-packages/backports ?

Нет, это тот, кого нужно найти. Тот, что под /Users/shiva , кажется, как-то мешает этому. Эта строка показывает, что он все еще находит его каким-то образом:

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

Но я не понимаю, как это возможно после того, как вы его удалили. :смущенный:

Ага, есть кое-что, о чем я никогда не знал: файлы .pkg . Можете ли вы найти файл с именем backports.pkg ?

( backports.pkg , вероятно, будет находиться в одном из этих каталогов site-packages , хотя может быть где-то еще в вашей системе)

Я нигде не могу найти файл backports.pkg. Я использовал find ./* -name backports.pkg в корневой папке.

Наконец, это сработало.

Переименование этой папки не работает, удаление работает. Спасибо большое за вашу помощь :)

Странно, я не понимаю, почему его удаление отличается от простого переименования. Рад, что у тебя всё-таки получилось.

У меня похожие проблемы, и удаление/установка pip, похоже, не помогает. Это вывод вашего скрипта отладки (из-за python test.py ):

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

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

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

У меня есть:

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

В конце концов я заставил его работать следующим методом взлома. Откройте (в 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

То же самое снова - каким-то образом он находит каталог, которого, кажется, нет. Можете ли вы также найти файл backport.pkg ? Я добавлю это в сценарий.

Вывод из последнего скрипта:

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

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

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

Это бесит; Я не могу понять, как он находит первый путь ( /home/ihincks/... ).

Есть ли что-нибудь еще в /home/ihincks/.local/lib/python2.7/site-packages/ , что могло бы объяснить, почему он находит там backports ?

Я не знаю точно, что искать. Вот все в /home/ihincks/.local/lib/python2.7/site-packages/ :

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

Что такое backports.shutil_get_terminal_size-1.0.0 и что у него внутри?

Это пакет Python, который, кажется, предоставляет единственную функцию get_terminal_size в backports.shutil_get_terminal_size . Эта папка имеет структуру:

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

Содержимое PKG-INFO :

Metadata-Version: 1.1
Name: backports.shutil_get_terminal_size
Version: 1.0.0
Summary: A backport of the get_terminal_size function from Python 3.3's shutil.
Home-page: https://github.com/chrippa/backports.shutil_get_terminal_size
Author: Christopher Rosell
Author-email: [email protected]
License: MIT
Description: backports.shutil_get_terminal_size
        ==================================

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

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

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


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

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



        History
        =======

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

        First release.

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

Ах, хорошо, я предполагаю, что в какой-то момент вы распаковали sdist вручную. Имеет ли значение удаление всего этого каталога ( backports.shutil_get_terminal_size-1.0.0 )? Я предполагаю, что это просто отвлекающий маневр.

Хорошо, /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py возвращен в исходную форму. Запустил ipython и получил ошибку ImportError: No module named shutil_get_terminal_size .

Затем временно переместил папку /home/ihincks/.local/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0 в /home/ihincks . Снова запустил ipython с той же ошибкой.

Итак, эта папка — просто отвлекающий маневр, и я до сих пор не понимаю, как она находит /home/ihincks/.local/lib/python2.7/site-packages/backports :-(

Хм, хотелось бы больше помочь, я только наполовину понимаю, что происходит; установка пути/библиотеки python меня обычно смущает.

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

Если кто-нибудь может воспроизвести это в системе, где они не возражают предоставить мне ssh-доступ, чтобы поковыряться и попытаться понять, что происходит, пожалуйста, свяжитесь с нами.

У меня тоже такая же проблема...... Недавно я установил jupyter, и когда я попытался открыть файл ноутбука ipython, он сказал, что ядро ​​мертво с ошибкой импорта для backports.shutil_get_terminal_size. Наконец, я решил эту проблему после обновления pip, переустановки jupyter и backports.shutil-get-terminal-size несколько раз........ и, наконец, запустив эту команду: python2 -m ipykernel install --user. Это дало жизнь моему ядру. Ссылка: http://askubuntu.com/questions/847263/install-jupyter-for-python-2-7-in-ubuntu-14-04

Итак, я столкнулся с этой проблемой, и после проверки /usr/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info я нашел только:

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

а импортировать нечего. Это после pip --upgrade, удаления/установки pip ipython и так далее. Итак, похоже, что pip на самом деле не устанавливал пакет, а только колесо. Я скачал файл .tar.gz, скопировал его в каталог колеса, что устранило проблему с ipython. Не правильный способ исправить это. Я работаю в RHEL7, так что, вероятно, это как-то связано.

Каталог, оканчивающийся на .dist-info , представляет собой файл метаданных об установленном пакете, он не предназначен для импорта чего-либо. Код должен находиться в соседнем каталоге: /usr/lib/python2.7/site-packages/backports

Возможно, код может вам помочь: pip install --user backports.shutil_get_terminal_size , просто установите его для текущего пользователя, если ваш ipython подходит для root или других пользователей.

Привет ребята,

если вы, ребята, попытались исправить это с помощью

pip install backports.shutil_get_terminal_size

но это не сработало.

Лучший способ - проверить ваш системный путь

import sys
print sys.path

проверьте каждый путь , если перед правильным путем к модели ipython есть пакет backports, и удалите его напрямую.

У меня очень странная версия этой ошибки:

pde<strong i="6">@damoclid</strong>:~$ ipython
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/IPython/__init__.py", line 48, in <module>
    from .core.application import Application
  File "/usr/lib/python2.7/dist-packages/IPython/core/application.py", line 25, in <module>
    from IPython.core import release, crashhandler
  File "/usr/lib/python2.7/dist-packages/IPython/core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "/usr/lib/python2.7/dist-packages/IPython/core/ultratb.py", line 128, in <module>
    from IPython.utils.terminal import get_terminal_size
  File "/usr/lib/python2.7/dist-packages/IPython/utils/terminal.py", line 22, in <module>
    from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size
ImportError: No module named shutil_get_terminal_size
pde<strong i="7">@damoclid</strong>:~$ python
Python 2.7.13 (default, Jan 19 2017, 14:48:08) 
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import backports.shutil_get_terminal_size
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named shutil_get_terminal_size
>>> import sys
>>> print [p for p in sys.path if os.path.exists(p + "/backports")]
['/usr/lib/python2.7/dist-packages']
>>> import backports
>>> backports.__path__
['/usr/local/lib/python2.7/dist-packages/backports']
>>> os.path.exists("/usr/local/lib/python2.7/dist-packages/backports")
False
>>> dir(backports)
['__doc__', '__name__', '__path__']
>>> 
pde<strong i="8">@damoclid</strong>:~$ cd /usr/local/bin/
pde<strong i="9">@damoclid</strong>:/usr/local/bin$ cd ..
pde<strong i="10">@damoclid</strong>:/usr/local$ sudo find . -iname \*backports\*
pde<strong i="11">@damoclid</strong>:/usr/local$

Я действительно не могу понять, почему python не находит родную ОС, упакованную backports / backports.shutil_get_terminal_size , или почему он находит призрачную версию backports в /usr/local /библиотека Моя sys.path это:

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

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

Я собираюсь снова открыть и пометить как 5.4. Я думаю, что мы должны продать shutil_get_terminal_size , чтобы быть в безопасности.

@Carreau между прочим, мне кажется, что здесь может быть ошибка pip или python, или я сделал что-то глупое, или, возможно, и то, и другое. Пробегу мимо более знающих людей.

Другой случай, когда он находит пакет backports , которого на самом деле нет. Несколько человек сообщили о чем-то подобном, но я не могу понять, откуда это взялось. Не могли бы вы попробовать запустить этот скрипт ? И поищите файлы .pkg и .pth , которые могут на это повлиять.

@Carreau в моей системе проблема оказалась в наличии модуля configparser :

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

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

In [1]:                                                                                                                                                                 
Do you really want to exit ([y]/n)? y

Спасибо @erikrose за помощь в отладке.

Закрытие как поставщика # 10587, и IPython 5.4 должен быть выпущен в ближайшее время.

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