IPython控制台找不到“backports.shutil_get_terminal_size”并且不会加载

时间:2016-05-14 22:13:54

标签: python python-2.7 terminal ipython anaconda

我在Windows 10上运行Python2.7,使用Anaconda进行env和大多数pkg管理。升级了许多软件包之后,我的ipython控制台现在无法在任何IDE或控制台中启动。当我尝试在控制台上运行它时,我收到此错误:

Traceback (most recent call last):
File "C:\Anaconda3\Scripts\ipython-script.py", line 3, in <module>
import IPython
File "C:\Anaconda3\lib\site-packages\IPython\__init__.py", line 48, in  <module>
from .core.application import Application
File "C:\Anaconda3\lib\site-packages\IPython\core\application.py", line 24, in <module>
from IPython.core import release, crashhandler
File "C:\Anaconda3\lib\site-packages\IPython\core\crashhandler.py", line 28, in <module>
from IPython.core import ultratb
File "C:\Anaconda3\lib\site-packages\IPython\core\ultratb.py", line 121, in <module>
from IPython.utils.terminal import get_terminal_size
File "C:\Anaconda3\lib\site-packages\IPython\utils\terminal.py", line 27, in <module>
import backports.shutil_get_terminal_size
ImportError: No module named backports.shutil_get_terminal_size

我尝试做的第一件事是:

pip install --upgrade backports.shutil_get_terminal_size

输出:

Requirement already up-to-date: backports.shutil_get_terminal_size in c:\anaconda3\lib\site-packages

我已经用两个

卸载并重新安装了ipython
conda uninstall ipython
conda install ipython

pip uninstall ipython
pip install ipython

仍然行不通。求救!

7 个答案:

答案 0 :(得分:30)

试试这个

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

答案 1 :(得分:5)

根据this thread,这是由于bug in conda导致与pip安装的冲突,并且可以通过强制重新安装来解决。对于帖子作者,$ conda install --force ipython解决了这个问题,对我而言是$ conda install --force backports

答案 2 :(得分:4)

我在CentOS 7上,我需要更改我的terminal.py,如下所示。

在导入语句中,我用前缀搞砸了并让它起作用 -

{{message['email-body']}}

答案 3 :(得分:1)

  • 适用于Anaconda Python版 Anaconda2-4.2.0-Linux-x86_64.sh
  • 编辑文件并摆脱&#34;尝试&#34;和&#34;除了&#34;进口报表
  • 添加新的导入声明
  • 更新配置解析器=&gt; ./conda install configparser
  • 安装nbbrowserpdf =&gt; .pip install nbbrowserpdf

    vim +22 /home/alienone/anaconda2/lib/python2.7/site-packages/IPython/utils/terminal.py

    从backports导入shutil_get_terminal_size为_get_terminal_size

答案 4 :(得分:0)

唯一对我有用的是从pypi下载tarball并运行python setup.py install

它像魅力一样

答案 5 :(得分:0)

Virtualenv在这样的情况下可以证明是非常有用的,更具体地说,一个不允许全局站点包的virtualenv。只需在隔离的virtualenv中进行干净安装即可排除多种原因。

根据我的经验,IPython及其依赖项确实想要在同一个站点中。如果您在全局安装了backports软件包但在用户漫游站点中安装了IPython,则可能会出现运行时导入错误,例如OP中描述的错误。

我意识到有时候我们需要全局站点包,但惩罚是一个更复杂的site和pip / setuptools中的依赖项处理。根据几个python配置和Windows环境条件,您的包可能分布在全球站点,用户(漫游)站点和virtualenv站点上。

通过在virtualenv中构建和安装clean而无法访问全局或用户包来排除奇怪的site问题。 virtualenvwrapper和add2virtualenv命令可用于干净地允许某些全局包。

答案 6 :(得分:0)

如果这有助于任何人,我的问题似乎是在本地安装了configparser pip,然后尝试使用conda安装其他所有内容。修复:

pip uninstall configparser
# You may need to install configparser now using conda...
ipython
# No ImportError now.

似乎configparser安装将一个backports包放在import命名空间中,该命名空间优先于conda安装包。