web-dev-qa-db-fra.com

La console IPython ne peut pas localiser "backports.shutil_get_terminal_size" et ne se charge pas

J'exécute Python2.7 sur Windows 10 en faisant env et la plupart des pkg management avec Anaconda. Après la mise à niveau de plusieurs packages, le démarrage de ma console ipython ne parvient plus dans aucun IDE ou sur la console. Lorsque j'essaie de l'exécuter sur la console, j'obtiens cette erreur:

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

La première chose que j'ai essayé de faire était:

pip install --upgrade backports.shutil_get_terminal_size

sortie:

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

J'ai désinstallé et réinstallé ipython avec les deux

conda uninstall ipython
conda install ipython

et

pip uninstall ipython
pip install ipython

Ça ne marchera toujours pas. Aidez-moi, s'il vous plaît!

19
Rob Truxal

Essaye ça

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

Selon ce fil ceci est dû à un bogue dans conda qui conduit à un conflit avec les installations pip et peut être résolu avec une réinstallation forcée. Pour l'auteur du fil, $ conda install --force ipython a résolu le problème. Pour moi, c'était $ conda install --force backports.

5

Je suis sur CentOS 7 et je devais changer de terminal.py comme indiqué ci-dessous.

Sur les déclarations d'importation, j'ai manipulé les préfixes et je les ai fait fonctionner -

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
4
Mike
  • Fonctionne pour la version Anaconda Python Anaconda2-4.2.0-Linux-x86_64.sh
  • Editez le fichier et supprimez les instructions "try" et "except" 
  • Ajouter dans la nouvelle déclaration d'importation 
  • Mettre à jour config parser => ./conda install configparser
  • Installer nbbrowserpdf => .pip installer nbbrowserpdf

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

    depuis les backports, importez shutil_get_terminal_size en tant que _get_terminal_size

1
Justin Jessup

La seule chose qui a fonctionné pour moi a été de télécharger l'archive à partir de pypi et d'exécuter python setup.py install

Ça a marché comme sur des roulettes

0
Obol

Virtualenv peut s'avérer très utile dans un cas comme celui-ci, et plus précisément encore, virtualenv sans paquet de site global autorisé. Éliminez de nombreuses causes en effectuant une nouvelle installation dans un environnement virtuel isolé.

D'après mon expérience, IPython et ses dépendances veulent vraiment être sur le même site. Si le package de backports est installé globalement mais que IPython est installé sur le site itinérant de l'utilisateur, des erreurs d'importation telles que celles décrites dans l'OP peuvent survenir.

Je me rends compte que nous avons parfois besoin de packages de site globaux mais la pénalité est une manipulation plus complexe de site et de dépendance au sein de pip/setuptools. Selon plusieurs conditions de configuration python et d'environnement Windows, vos packages peuvent être répartis sur des sites globaux, des sites utilisateurs (itinérants) et des sites virtualenv.

Éliminez les problèmes site étranges en générant et en installant une installation propre dans virtualenv sans accès aux packages globaux ou utilisateur. Les commandes virtualenvwrapper et add2virtualenv peuvent être utilisées pour autoriser proprement certains packages globaux.

0
user2097818

Au cas où cela aiderait quelqu'un, le problème pour moi semblait être d'avoir installé configparser avec pip localement, puis d'essayer d'installer tout le reste avec conda. Pour réparer:

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

Il semble que l’installation de configparser place un package de backports dans l’espace de noms d’importation, qui a préséance sur le package installé.

0
markmuetz