2016-05-14 18 views
18

Sto eseguendo Python2.7 su Windows 10 facendo env e la maggior parte della gestione pkg con Anaconda. Dopo aver aggiornato un certo numero di pacchetti, la mia console ipython ora non si avvia in nessun IDE o console. Quando si tenta di eseguirlo alla consolle ottengo questo errore:La console IPython non può individuare "backports.shutil_get_terminal_size" e non caricherà

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 prima cosa che ho cercato di fare è stato:

pip install --upgrade backports.shutil_get_terminal_size 

uscita:

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

Ho disinstallato e reinstallato ipython con entrambi

conda uninstall ipython 
conda install ipython 

e

pip uninstall ipython 
pip install ipython 

Ancora non funzionerà. Aiuto per favore!

+11

Provare 'pip uninstall backports.shutil_get_terminal_size' e quindi installarlo di nuovo. Se non sta ancora giocando a palla, controlla in 'C: \ Anaconda3 \ lib \ site-packages' che la cartella dei backport sia lì. –

+0

corretto. Grazie amico mio. –

risposta

29

Prova questa

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

Una piccola spiegazione di ciò che effettivamente fa sarebbe utile. –

+0

Grazie. Ha funzionato per me Ma una spiegazione sarebbe utile. – zbinsd

+2

I canali di conda sono "repository" di pacchetti di conda. [conda-forge] (https://conda-forge.github.io) è una vasta raccolta di pacchetti gestiti dalla comunità. Viene aggiunto qui perché backports.shutil_get_terminal_size non è ancora incluso nel canale di conda predefinito. – minrk

3

Sono su CentOS 7, e avevo bisogno di cambiare il mio terminal.py come illustrato di seguito.

Sulle istruzioni di importazione ho pasticciato con i prefissi e preso a lavorare -

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 
+0

Grazie, questo ha fatto il trucco. Sembra che la stessa correzione sia già stata aggiunta al prossimo iPython 5.0.0 (ancora in beta): https://github.com/ipython/ipython/commit/05edbcc6dc9f9052f1f7255df83a6794ee4d582c –

+0

non fa il trucco per me. Non riesce a caricare 'get_terminal_size' da' backports', e non riesce a trovare la libreria 'shutil_backports' ovunque. Anche cercando di far funzionare la distribuzione IPython ufficiale ... –

+0

Questo ha fatto il trucco anche per me – djmac

4

Secondo this thread questo è dovuto ad una bug in conda che porta ad un conflitto con pip installa e può essere risolto con un forza re-installare. Per l'autore del thread, $ conda install --force ipython risolto il problema, per me era $ conda install --force backports.

1
  • Lavori per la versione Anaconda Python Anaconda2-4.2.0-Linux-x86_64.sh
  • modificare il file e sbarazzarsi del "cercare" e "tranne" istruzioni import
  • Aggiungere nel nuovo istruzione import
  • Aggiornamento config parser => ./conda installare ConfigParser
  • installare nbbrowserpdf => .pip installare nbbrowserpdf

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

    da backport di importazione shutil_get_terminal_size come _get_terminal_size

0

L'unica cosa che ha funzionato per me era quello di scaricare il tarball da PyPI ed eseguire python setup.py install

ha funzionato come un fascino

0

virtualenv può rivelarsi molto utile in un caso come questo, e ancora di più nello specifico, un virtualenv senza pacchetti sito globale permesso. Escludere molte cause semplicemente eseguendo un'installazione pulita in una virtualenv isolata.

Nella mia esperienza IPython e le sue dipendenze vogliono davvero essere nello stesso sito.Se il pacchetto di backports è installato a livello globale ma IPython è installato nel sito di roaming dell'utente, è possibile che si verifichino errori di importazione di runtime come quelli descritti nell'OP.

Mi rendo conto che a volte abbiamo bisogno di pacchetti di siti globali, ma la penalità è una più complicata site e la gestione delle dipendenze all'interno di pip/setuptools. A seconda della configurazione di Python e delle condizioni dell'ambiente Windows, i pacchetti possono essere distribuiti su siti globali, siti utente (roaming) e siti virtualenv.

Escludono i problemi strani site creando e installando clean in un virtualenv senza accesso ai pacchetti globali o utente. Il comando virtualenvwrapper e add2virtualenv può essere utilizzato per consentire in modo pulito alcuni pacchetti globali.

0

Nel caso in cui questo aiuti qualcuno, il problema per me sembrava aver installato configparser con pip localmente, e quindi cercando di installare tutto il resto usando conda. Per risolvere il problema:

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

Sembra che il ConfigParser installare mette un pacchetto backport nello spazio dei nomi di importazione, che ha avuto la precedenza sul pacchetto di Conda installato.

Problemi correlati