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

IPython console can't locate "backports.shutil_get_terminal_size" and won't load

我 运行ning Python2.7 在 windows 10 上使用 Anaconda 进行环境和大多数 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

还是不行。请帮忙!

试试这个

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

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

在导入语句中我弄乱了前缀并让它工作 -

import os
import sys
import warnings
try:
  from backports import get_terminal_size as _get_terminal_size
except ImportError:
  # use backport on Python 2
  from shutil_backports import get_terminal_size as _get_terminal_size

根据 this thread this is due to a bug in conda 这导致与 pip 安装冲突,可以通过强制重新安装来解决。对于线程作者,$ conda install --force ipython 解决了问题,对我来说是 $ conda install --force backports

  • 适用于 Anaconda Python 版本 A​​naconda2-4.2.0-Linux-x86_64.sh
  • 编辑文件并删除 "try" 和 "except" 导入语句
  • 在新的导入语句中添加
  • 更新配置解析器 => ./conda install configparser
  • 安装 nbbrowserpdf => .pip 安装 nbbrowserpdf

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

    from backports import shutil_get_terminal_size as _get_terminal_size

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

效果很好

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

根据我的经验,IPython 及其依赖项确实希望位于同一站点中。如果您全局安装了 backports 包,但 IPython 安装在用户漫游站点中,您可能会遇到运行时导入错误,例如 OP 中描述的错误。

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

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

万一这对任何人都有帮助,我的问题似乎是在本地安装了 configparser 和 pip,然后尝试使用 conda 安装其他所有东西。修复:

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

似乎 configparser 安装在导入命名空间中放置了一个 backports 包,它优先于 conda 安装包。