Ipython: Tidak ada modul bernama shutil_get_terminal_size

Dibuat pada 23 Jun 2016  ·  71Komentar  ·  Sumber: ipython/ipython

Selamat siang,
Saya berkontribusi pada proyek kecil untuk membuat kernel di atas ipykernel. Sudah lama sejak saya menyentuhnya, dan hari ini ketika saya menerapkan lingkungan dev baru dengan menginstal Jupyter, saya mendapatkan jejak tumpukan berikut saat memanggil ipykernel:

  File "<path to python>/lib/python2.7/site-packages/ipykernel-4.3.1-py2.7.egg/ipykernel/__init__.py", line 2, in <module>
    from .connect import *
  File "<path to python>/lib/python2.7/site-packages/ipykernel-4.3.1-py2.7.egg/ipykernel/connect.py", line 13, in <module>
    from IPython.core.profiledir import ProfileDir
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/__init__.py", line 48, in <module>
    from .core.application import Application
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/core/application.py", line 24, in <module>
    from IPython.core import release, crashhandler
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/IPython/core/ultratb.py", line 126, in <module>
    from IPython.utils.terminal import get_terminal_size
  File "<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg/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

Jelas ada sesuatu yang berubah sejak terakhir saya menggunakan IPython dan ipykernel. Tahu apa masalahnya? Saya sedang mengerjakan kotak OSX dengan Python 2.7.10.

Terbaik, Aurelien

Komentar yang paling membantu

Sepertinya Anda telah menginstal IPython tanpa mendapatkan dependensinya. Mengingat saya melihat telur, ini mungkin berarti Anda memiliki versi setuptools yang terlalu lama, dan mungkin menggunakan easy_install . Hal pertama yang pertama, pastikan Anda memiliki pip/setuptools yang relatif baru:

pip install --upgrade setuptools pip

Kemudian, coba instal ulang IPython dengan pip (jangan pernah gunakan easy_install, kecuali Anda tahu bahwa ada alasan bagus mengapa pip tidak/tidak bisa bekerja. Kasus ini jarang terjadi):

pip uninstall ipython
pip install ipython

Semua 71 komentar

Sepertinya Anda telah menginstal IPython tanpa mendapatkan dependensinya. Mengingat saya melihat telur, ini mungkin berarti Anda memiliki versi setuptools yang terlalu lama, dan mungkin menggunakan easy_install . Hal pertama yang pertama, pastikan Anda memiliki pip/setuptools yang relatif baru:

pip install --upgrade setuptools pip

Kemudian, coba instal ulang IPython dengan pip (jangan pernah gunakan easy_install, kecuali Anda tahu bahwa ada alasan bagus mengapa pip tidak/tidak bisa bekerja. Kasus ini jarang terjadi):

pip uninstall ipython
pip install ipython

Khususnya dalam kasus ini, kami telah menambahkan ketergantungan pada paket backports.shutil_get_terminal_size .

Terima kasih atas tanggapan cepat Anda! Namun, misteri itu semakin dalam. Sepertinya menginstal Jupyter melalui pip pada baris perintah menghasilkan hasil yang berbeda daripada menetapkan Jupyter sebagai persyaratan saat menggunakan setuptools . Sementara pendekatan pertama berhasil, pendekatan kedua gagal untuk saya. Berikut adalah langkah-langkah untuk mereproduksi masalah ini:

Pertama kita mulai dengan interpreter Python 2.7.11 barebone, dengan hanya tiga paket yang diinstal:

$ pip list
pip (8.1.2)
setuptools (23.1.0)
virtualenv (15.0.2)

Jika saya menginstal Jupyter menggunakan pip semuanya berfungsi dengan baik, dan saya mendapatkan paket-paket berikut:

$ pip install jupyter
<long output>
$ pip list
appnope (0.1.0)
backports-abc (0.4)
backports.shutil-get-terminal-size (1.0.0)
backports.ssl-match-hostname (3.5.0.1)
certifi (2016.2.28)
configparser (3.5.0)
decorator (4.0.10)
entrypoints (0.2.2)
functools32 (3.2.3.post2)
gnureadline (6.3.3)
ipykernel (4.3.1)
ipython (4.2.0)
ipython-genutils (0.1.0)
ipywidgets (5.1.5)
Jinja2 (2.8)
jsonschema (2.5.1)
jupyter (1.0.0)
jupyter-client (4.3.0)
jupyter-console (4.1.1)
jupyter-core (4.1.0)
MarkupSafe (0.23)
mistune (0.7.2)
nbconvert (4.2.0)
nbformat (4.0.1)
notebook (4.2.1)
pathlib2 (2.1.0)
pexpect (4.1.0)
pickleshare (0.7.2)
pip (8.1.2)
ptyprocess (0.5.1)
Pygments (2.1.3)
pyzmq (15.2.0)
qtconsole (4.2.1)
setuptools (23.1.0)
simplegeneric (0.8.1)
singledispatch (3.4.0.3)
six (1.10.0)
terminado (0.6)
tornado (4.3)
traitlets (4.2.1)
wheel (0.29.0)
widgetsnbextension (1.2.3)

Namun, jika saya mencoba menginstal Jupyter sebagai persyaratan untuk sebuah proyek dengan memiliki skrip setup.py (perhatikan bahwa saya memulai ulang dari juru bahasa 2.7.11 baru dengan tiga modul dasar pip , setuptools dan virtualenv ):

#!/usr/bin/env python
import setuptools
setuptools.setup(
    ...
    install_requires = [
        "jupyter"],
   ...

... maka gagal:

$ pip list
pip (8.1.2)
setuptools (23.1.0)
virtualenv (15.0.2)
$ ./setup.py install
<long output>
Searching for entrypoints
Reading https://pypi.python.org/simple/entrypoints/
No local packages or download links found for entrypoints
error: Could not find suitable distribution for Requirement.parse('entrypoints')
make: *** [install] Error 1

Menariknya, ketika mendaftar paket yang _did_ terinstal, kita dapat melihat bahwa ipython dan jupyter-console sekarang masing-masing adalah versi 5.0.0b4 dan 5.0.0b1, bukan 4.2.0 dan 4.1.1 seperti di atas saat menginstal Jupyter dengan pip . Berikut paket-paketnya:

$ pip list
ipykernel (4.3.1)
ipython (5.0.0b4)
ipywidgets (5.1.5)
jupyter (1.0.0)
jupyter-client (4.3.0)
jupyter-console (5.0.0b1)
nbconvert (4.2.0)
notebook (4.2.1)
pip (8.1.2)
qtconsole (4.2.1)
setuptools (23.1.0)
tornado (4.3)
traitlets (4.2.1)
wheel (0.29.0)
widgetsnbextension (1.2.3)

Saya mungkin kehilangan sesuatu di sini, tetapi saya tidak yakin apa. Adakah yang tahu mengapa jupyter sebagai ketergantungan pada skrip setuptools -powered setup.py gagal di sini?

Terbaik,
Aurelien

Itu menunjukkan bahwa mungkin setuptools mendapatkan versi yang berbeda saat diimpor dari pada daftar pip (bug yang diketahui disebabkan oleh setuptools lama). Apa yang Anda dapatkan dari:

python -c 'import setuptools; print(setuptools, setuptools.__version__)'

Dan juga:

python -m site

Ini juga sesuatu yang mungkin tidak familiar bahwa jika Anda menggunakan setuptools di setup.py, Anda tidak boleh melakukan python setup.py install , hanya pip install . .

Berikut adalah outputnya:

$ python -c 'import setuptools; print(setuptools, setuptools.__version__)'
(<module 'setuptools' from '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/setuptools/__init__.pyc'>, '23.1.0')

dan

$ python -m site
sys.path = [
    '/Users/ajmazurie/Data/Professional-MSU/2015.07-MSU-me-Jupyter_in_Classroom/Projects/Callysto/callysto',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/jupyter-1.0.0-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/ipywidgets-5.1.5-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/ipykernel-4.3.1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/nbconvert-4.2.0-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/jupyter_console-5.0.0b1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/qtconsole-4.2.1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/notebook-4.2.1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/widgetsnbextension-1.2.3-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/traitlets-4.2.1-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/ipython-5.0.0b4-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/tornado-4.3-py2.7-macosx-10.10-x86_64.egg',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages/jupyter_client-4.3.0-py2.7.egg',
    '/Users/ajmazurie/<path to python>/lib/python27.zip',
    '/Users/ajmazurie/<path to python>/lib/python2.7',
    '/Users/ajmazurie/<path to python>/lib/python2.7/plat-darwin',
    '/Users/ajmazurie/<path to python>/lib/python2.7/plat-mac',
    '/Users/ajmazurie/<path to python>/lib/python2.7/plat-mac/lib-scriptpackages',
    '/Users/ajmazurie/<path to python>/lib/python2.7/lib-tk',
    '/Users/ajmazurie/<path to python>/lib/python2.7/lib-old',
    '/Users/ajmazurie/<path to python>/lib/python2.7/lib-dynload',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7/plat-darwin',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7/lib-tk',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7/plat-mac',
    '/Users/ajmazurie/.direnv/pyenv/versions/2.7.11/lib/python2.7/plat-mac/lib-scriptpackages',
    '/Users/ajmazurie/<path to python>/lib/python2.7/site-packages',
]
USER_BASE: '/Users/ajmazurie/.local' (doesn't exist)
USER_SITE: '/Users/ajmazurie/.local/lib/python2.7/site-packages' (doesn't exist)
ENABLE_USER_SITE: False

Ini juga sesuatu yang mungkin tidak familiar bahwa jika Anda menggunakan setuptools di setup.py, Anda tidak boleh melakukan python setup.py install , hanya pip install . .

Ini sangat menarik, dan mungkin itu pertanda bahwa saya perlu mengupdate pengetahuan saya tentang setuptools . Bagaimanapun, ini memperbaiki masalah saya! Dengan mengetikkan pip install . di folder yang berisi skrip setup.py saya di atas, saya berhasil menginstal Jupyter dan dependensinya. Terima kasih!

Sebagai pertanyaan tambahan, mengapa tidak bekerja dengan python setup.py install ? Saya tidak dapat menemukan referensi online tentang mengapa ini bisa menjadi masalah.

Terbaik, Aurelien

python setup.py install melakukan hal yang sama seperti easy_install. easy_install melakukan banyak hal yang tidak menyenangkan, itulah alasan pip dibuat. Untuk alasan kompatibilitas mundur, python setup.py install dengan setuptools yang diimpor akan selalu melakukan hal-hal yang tidak diinginkan yang dilakukan easy_install , dan karenanya tidak boleh dipanggil.

Saya hanya mendapatkan kesalahan ini jika saya menginstal ipython di virtualvenv yang dibagikan di NFS. Adakah petunjuk mengapa menginstal di venv pada NFS dapat menyebabkan masalah ini?

Tidak yakin mengapa NFS akan membuat perbedaan, tetapi periksa versi pip di dalam virtualenv, dan jika itu bukan yang terbaru, coba perbarui:

pip install --upgrade setuptools pip

@takluyver Pip yang sama yang menginstal ipython dengan baik di sistem file "normal", tidak menginstalnya dengan benar di NFS. Dan ya, ini adalah pip versi terbaru.

Aneh. Tidak tahu mengapa NFS akan mempengaruhi itu.

Juga mengalami masalah ini dengan Python 2.7 menggunakan pip (8.1.2) dan setuptools (25.1.6). Apakah tidak mungkin ada sesuatu yang lebih terjadi?

Menginstal backports.shutil_get_terminal_size dengan pip sebelumnya adalah solusi yang efektif untuk masalah tersebut.

Seperti disebutkan di tempat lain, letakkan PR ( https://github.com/paulgb/runipy/pull/125 ) bersama-sama untuk menunjukkan kesalahan backports.shutil_get_terminal_size dan entrypoints kesalahan. Komit pertama menunjukkan kesalahan pertama dan komit kedua menunjukkan kesalahan kedua. Dalam kedua kasus, 3 CI pertama yang dibangun dalam matriks menarik. Ketiganya menggunakan setuptools untuk menginstal semuanya.

Sepertinya ada masalah di setuptools. Menginstal dengan pip (seperti yang harus selalu dilakukan) akan memperbaikinya .

Saya tidak 100% yakin apa yang gagal dilakukan oleh setuptools.

Saya baru saja mengalami masalah yang sama saat menginstal IPython (bukan Jupyter) di virtualenv 2.7.3 yang baru. IPython tampaknya menginstal tetapi tidak ada pathlib2 dan kemudian backports.shutil-get-terminal-size . Melakukan pip install pada masing-masing memperbaiki dependensi dan IPython sekarang berfungsi.

$ pip freeze
nose==1.3.7
numpy==1.8.0
pyreadline==2.1
wsgiref==0.1.2

$ pip install ipython
[...]
Successfully installed ipython setuptools decorator pickleshare simplegeneric traitlets prompt-toolkit pygments pexpect ipython-genutils six wcwidth ptyprocess
Cleaning up...

$ pip freeze
Pygments==2.1.3
decorator==4.0.10
ipython==5.0.0
ipython-genutils==0.1.0
nose==1.3.7
numpy==1.8.0
pexpect==4.2.0
pickleshare==0.7.3
prompt-toolkit==1.0.5
ptyprocess==0.5.1
pyreadline==2.1
simplegeneric==0.8.1
six==1.10.0
traitlets==4.2.2
wcwidth==0.1.7
wsgiref==0.1.2

$ ipython
[...]
pkg_resources.DistributionNotFound: The 'pathlib2' distribution was not found and is required by ipython

$ pip install pathlib2

$ ipython
[...]
pkg_resources.DistributionNotFound: The 'backports.shutil_get_terminal_size' distribution was not found and is required by ipython

$ pip install backports.shutil_get_terminal_size

$ pip freeze
Pygments==2.1.3
backports.shutil-get-terminal-size==1.0.0
decorator==4.0.10
ipython==5.0.0
ipython-genutils==0.1.0
nose==1.3.7
numpy==1.8.0
pathlib2==2.1.0
pexpect==4.2.0
pickleshare==0.7.3
prompt-toolkit==1.0.5
ptyprocess==0.5.1
pyreadline==2.1
simplegeneric==0.8.1
six==1.10.0
traitlets==4.2.2
wcwidth==0.1.7
wsgiref==0.1.2

$ ipython
Python 2.7.3 (default, Aug 11 2016, 11:06:04) 
Type "copyright", "credits" or "license" for more information.

IPython 5.0.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]: 

Bisakah Anda melakukan pip --version ? Saya kira Anda memiliki versi pip yang terlalu lama.

Ya kamu benar. Saya berada di pip 1.4.1.

Saya mengulangi latihan setelah memutakhirkan virtualenv saya ke pip 8.1.2 dan IPython 5.0.0 diinstal tanpa masalah.

$ pip freeze
backports.shutil-get-terminal-size==1.0.0
decorator==4.0.10
ipython==5.0.0
ipython-genutils==0.1.0
numpy==1.8.0
pathlib2==2.1.0
pexpect==4.2.0
pickleshare==0.7.3
prompt-toolkit==1.0.5
ptyprocess==0.5.1
Pygments==2.1.3
simplegeneric==0.8.1
six==1.10.0
traitlets==4.2.2
wcwidth==0.1.7

Saya juga mengalami masalah ini di OS X:

cternus<strong i="6">@astarael</strong>:~⟫ ipython
Traceback (most recent call last):
  File "/usr/local/bin/ipython", line 7, in <module>
    from IPython import start_ipython
  File "/usr/local/lib/python2.7/site-packages/IPython/__init__.py", line 48, in <module>
    from .core.application import Application
  File "/usr/local/lib/python2.7/site-packages/IPython/core/application.py", line 25, in <module>
    from IPython.core import release, crashhandler
  File "/usr/local/lib/python2.7/site-packages/IPython/core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "/usr/local/lib/python2.7/site-packages/IPython/core/ultratb.py", line 128, in <module>
    from IPython.utils.terminal import get_terminal_size
  File "/usr/local/lib/python2.7/site-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
cternus<strong i="7">@astarael</strong>:~⟫ pip freeze | grep shutil
backports.shutil-get-terminal-size==1.0.0
cternus<strong i="8">@astarael</strong>:~⟫ pip freeze | grep ipython
ipython==5.0.0
ipython-genutils==0.1.0
cternus<strong i="9">@astarael</strong>:~⟫ python -m site
sys.path = [
    '/Users/cternus',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
    '/usr/local/lib/python2.7/site-packages',
    '/Library/Python/2.7/site-packages',
    '/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages',
]
USER_BASE: '/Users/cternus/Library/Python/2.7' (doesn't exist)
USER_SITE: '/Users/cternus/Library/Python/2.7/lib/python/site-packages' (doesn't exist)
ENABLE_USER_SITE: True

Saya sudah mencoba melakukan sudo pip install --upgrade --force-reinstall ipython (serta menginstal ulang pip dan setuptools) tanpa hasil.

Setelah beberapa penyelidikan, saya yakin modul backports.shutil_get_terminal_size itu sendiri yang salah:

cternus<strong i="7">@astarael</strong>:/usr/local/lib/python2.7/site-packages⟫ python
Python 2.7.12 (default, Jun 29 2016, 14:05:02)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import backports
>>> dir(backports)
['__doc__', '__name__', '__path__']
>>> 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
>>>
cternus<strong i="8">@astarael</strong>:/usr/local/lib/python2.7/site-packages⟫ ls backports
__init__.py              functools_lru_cache.py   shutil_get_terminal_size
cternus<strong i="9">@astarael</strong>:/usr/local/lib/python2.7/site-packages⟫ ls backports/shutil_get_terminal_size
__init__.py           __init__.pyc          get_terminal_size.py  get_terminal_size.pyc
cternus<strong i="10">@astarael</strong>:/usr/local/lib/python2.7/site-packages⟫

Menariknya, modul backports tampaknya menginstal dua versi (sedikit berbeda?!) dari dirinya sendiri:

root<strong i="15">@astarael</strong>:/usr/local/lib/python2.7/site-packages/backports⟫ pip show --no-cache -vf backports.shutil-get-terminal-size
---
Metadata-Version: 2.0
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]
Installer: pip
License: MIT
Location: /usr/local/lib/python2.7/site-packages
Requires:
Classifiers:
  Development Status :: 5 - Production/Stable
  License :: OSI Approved :: MIT License
  Programming Language :: Python :: 2.6
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3.2
Files:
  backports.shutil_get_terminal_size-1.0.0.dist-info/DESCRIPTION.rst
  backports.shutil_get_terminal_size-1.0.0.dist-info/INSTALLER
  backports.shutil_get_terminal_size-1.0.0.dist-info/METADATA
  backports.shutil_get_terminal_size-1.0.0.dist-info/RECORD
  backports.shutil_get_terminal_size-1.0.0.dist-info/WHEEL
  backports.shutil_get_terminal_size-1.0.0.dist-info/metadata.json
  backports.shutil_get_terminal_size-1.0.0.dist-info/top_level.txt
  backports/__init__.py
  backports/__init__.pyc
  backports/shutil_get_terminal_size/__init__.py
  backports/shutil_get_terminal_size/__init__.pyc
  backports/shutil_get_terminal_size/get_terminal_size.py
  backports/shutil_get_terminal_size/get_terminal_size.pyc
  shutil_backports/__init__.py
  shutil_backports/__init__.pyc
  shutil_backports/get_terminal_size.py
  shutil_backports/get_terminal_size.pyc

dan menambal IPython/utils/terminal.py untuk menggunakan shutil_backports.get_terminal_size berfungsi. pergilah.

Halo,

Saya mendapatkan kesalahan yang sama di virtualenv. Saya telah menggunakan pip untuk menginstal jupyter.

saya mendapatkan
ImportError: Tidak ada modul bernama shutil_get_terminal_size

_"pip freeze" menunjukkan backports.shutil-get-terminal-size==1.0.0_

Jadi saya mencoba memutakhirkan. Itu menunjukkan:

_pip install --upgrade backports.shutil-get-terminal-size_
Persyaratan sudah diperbarui: backports.shutil-get-terminal-size di /Library/Python/2.7/site-packages

Jadi entah bagaimana mengakses perpustakaan global saya dan bukan yang ada di venv saya.

Kemudian saya menghapus backports.shutil-get-terminal-size dari global python dan menginstalnya di venev saya. Sekarang bekerja dengan baik.

Saya dapat mereproduksi ini 100% dari waktu dengan instalasi ini

pip install --user --upgrade ipython==4.2

Saya dapat mereproduksi ini 0% dari waktu dengan instalasi ini

pip install --user --upgrade ipython==4.1.1

Perhatikan bahwa dengan --user alat python baris perintah diinstal pada ~/Library/Python/2.7/bin/ipython alih-alih /usr/local/bin

@AndrewHoos dan bagi saya, kedua perintah mendapatkan dependensi dengan benar. Apa yang Anda dapatkan dari pip --version ? Setidaknya harus 8. Jika tidak, pastikan setuptools dan pip Anda mutakhir:

pip install --upgrade setuptools pip

Saya mengalami masalah ini dengan notebook 4.2.2 dan ipython 5.1.0 diinstal dengan conda . Seperti disebutkan di atas, saya sudah menginstal shutil_get_terminal_size :

pip install backports.shutil_get_terminal_size
Requirement already satisfied (use --upgrade to upgrade): backports.shutil_get_terminal_size in /.../anaconda/lib/python2.7/site-packages

Namun, dalam shell python biasa, perintah import backports.shutil_get_terminal_size gagal.

Oke, saya menemukan solusi yang kasar tetapi sederhana: hapus instalan dan instal lagi. Sekarang ipython berfungsi ....

$ pip uninstall backports.shutil_get_terminal_size
Uninstalling backports.shutil-get-terminal-size-1.0.0:
  /home/pierre/Programmes/anaconda/lib/python2.7/site-packages/backports
  /home/pierre/Programmes/anaconda/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0-py2.7.egg-info
Proceed (y/n)? y
  Successfully uninstalled backports.shutil-get-terminal-size-1.0.0
$ pip install backports.shutil_get_terminal_size
Collecting backports.shutil_get_terminal_size
  Downloading backports.shutil_get_terminal_size-1.0.0-py2.py3-none-any.whl
Installing collected packages: backports.shutil-get-terminal-size
Successfully installed backports.shutil-get-terminal-size-1.0.0

Juga mengalami masalah ini
Sayangnya tidak ada yang membantu di atas, tetapi masalahnya persis seperti yang dilaporkan di atas:

ImportError: Tidak ada modul bernama shutil_get_terminal_size

Menghapus dan menginstal IPython dan port belakang bukanlah hal yang menyenangkan.

Masalahnya adalah saya telah menginstal Jupyter & teman-teman secara global, dan shutil_get_terminal_size diinstal secara global. yaitu di /Library/Python/2.7/site-packages/shutil_backports/

Namun saya juga menginstal backports.functools_lru_cache secara lokal, ini sebenarnya memblokir impor shutil_backports.

Untuk menguji apakah ini masalahnya: ls ~/Library/Python/2.7/lib/python/site-packages (Pada OSX, jika Anda melihat folder kembali port, itu mungkin salah. Saya menghapus perpustakaan dari perpustakaan pengguna dan menambahkannya ke pustaka sistem. Bagaimanapun Anda tidak mencampur & mencocokkan port belakang Anda. Itu harus global atau lokal untuk bekerja sepenuhnya.

Masalah yang sama di Debian Sid (Tidak Stabil) sepenuhnya diperbarui. Saya memperbarui pip; mencoba mencopot dan memasang lagi dari baru; dll. Tidak ada yang berhasil.

# uname -a
Linux bunsen 4.7.0-1-amd64 #1 SMP Debian 4.7.2-1 (2016-08-28) x86_64 GNU/Linux
# pip2 --version
pip 8.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)
# pip show ipython
---
Metadata-Version: 2.0
Name: ipython
Version: 5.1.0
Summary: IPython: Productive Interactive Computing
Home-page: http://ipython.org
Author: The IPython Development Team
Author-email: [email protected]
Installer: pip
License: BSD
Location: /usr/local/lib/python2.7/dist-packages
Requires: pickleshare, simplegeneric, traitlets, backports.shutil-get-terminal-size, decorator, pygments, prompt-toolkit, pexpect, pathlib2, setuptools
Classifiers:
  Framework :: IPython
  Intended Audience :: Developers
  Intended Audience :: Science/Research
  License :: OSI Approved :: BSD License
  Programming Language :: Python
  Programming Language :: Python :: 2
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Topic :: System :: Shells
Entry-points:
  [console_scripts]
  iptest = IPython.testing.iptestcontroller:main
  iptest2 = IPython.testing.iptestcontroller:main
  ipython = IPython:start_ipython
  ipython2 = IPython:start_ipython
  [pygments.lexers]
  ipython = IPython.lib.lexers:IPythonLexer
  ipython3 = IPython.lib.lexers:IPython3Lexer
  ipythonconsole = IPython.lib.lexers:IPythonConsoleLexer

uninstall dan install backports.shutil_get_terminal_size lagi berfungsi.

+1 di osx. Masalah yang sama, - Copot pemasangan global dan instal di virtualenv berfungsi dan arahkan ke lokal.

@Hiczeke saya mencobanya dan tidak berhasil

Setelah mencoba banyak hal, perintah terakhir yang diselesaikan adalah memperbarui setuptools
Saya ingin merekomendasikan:

  • Uninstall semua paket sistem, seperti debian ipython dan python-backports-shutil-get-terminal-size
  • Copot pemasangan dengan pip: ipython , jupyter dan backports.shutil_get_terminal_size
  • Tingkatkan pip dan setuptools: pip install --upgrade setuptools pip`
  • Instal ulang ipython (dan lainnya) dengan pip: pip install ipython jupyter

Berikut ini memperbaiki masalah bagi saya:
pip uninstall backports.shutil_get_terminal_size
pip install backports.shutil_get_terminal_size

@Paul-Richter @Hiczeke
Terima kasih banyak!
menginstal ulang "backports.shutil_get_terminal_size" bekerja dengan baik untuk saya.

pip install --upgrade --force-reinstall ipython

Ini memperbaiki masalah di Mac saya

Saya cukup bingung:

sudo pip uninstall backports.shutil_get_window_size
>>Cannot uninstall requirement backports.shutil-get-window-size, not installed

sudo pip install backports.shutil_get_window_size
>>Could not find a version that satisfies the requirement backports.shutil_get_window_size (from versions: )
>>No matching distribution found for backports.shutil_get_window_size

Tetap untukmu, Ian.

sudo pip uninstall backports.shutil_get_ terminal _size

sudo pip install backports.shutil_get_ terminal _size

Pada Rab, 25 Jan 2017 jam 12:52 PM Ian Hincks [email protected]
menulis:

Saya cukup bingung:

sudo pip uninstall backports.shutil_get_window_size

Tidak dapat menghapus persyaratan backports.shutil-get-window-size, tidak diinstal

sudo pip install backports.shutil_get_window_size

Tidak dapat menemukan versi yang memenuhi persyaratan backports.shutil_get_window_size (dari versi: )
Tidak ditemukan distribusi yang cocok untuk backports.shutil_get_window_size


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/ipython/ipython/issues/9656#issuecomment-275197674 ,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/ATln0kDS_u6PaTk6Qunjc_oEtKCv_-cRks5rV5n7gaJpZM4I9MnS
.

@Paul-Richter Ah, terima kasih :)

Tak satu pun dari hal-hal mencopot/menginstal ulang bekerja untuk saya. Apa yang akhirnya berhasil bagi saya disarankan oleh @ternus dalam komentar di atas: buka (di linux) /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py dan ubah baris

from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size

ke

from shutil_backports import get_terminal_size as _get_terminal_size

@ihincks : Komentar Anda memecahkan masalah saya di osx

Saya menemukan kesalahan ini hari ini di OS X 10.12.3. Berikut ini diselesaikan:

pip install --upgrade pip setuptools
pip install --upgrade --force-reinstall ipython

Saya tidak percaya bahwa ini adalah kesalahan ipython. Merekomendasikan penutupan.

Saya cukup yakin itu bukan kesalahan IPython, tapi saya berharap saya bisa mencari tahu apa yang sebenarnya salah sehingga kami dapat menawarkan solusi yang lebih baik kepada orang-orang daripada menginstal ulang+harapan...

@pierre-haessig Anda menyelamatkan hari saya. Terima kasih banyak.

@ihincks Saya mencoba semua posting tetapi tidak ada yang berhasil. Hanya milikmu yang berhasil. Anda adalah penyelamat hidup :)

fix by ihincks juga berfungsi di windows 10

Saya harap ini dapat membantu seseorang.
dalam kasus saya, saya menemukan akar masalahnya adalah versi ipython yang salah:

ls -lah /usr/local/bin/ipython*
-rwxr-xr-x  1 z  staff   247B Mar  5 15:16 /usr/local/bin/ipython
-rwxr-xr-x  1 z  staff   247B Mar  5 15:16 /usr/local/bin/ipython3

Saya tidak tahu bagaimana itu bisa terjadi karena saya tidak memiliki versi python3 sama sekali.
Masalah saya terpecahkan ketika saya menghapus python dan menghapus perpustakaan terkait

brew uninstall python
rm -rf /usr/local/lib/python2.7

Saya telah menginstal ulang python dan memastikan bahwa pip memiliki versi dan lokasi yang benar.
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
pip2 install ipython

@ihincks

Ini adalah satu-satunya jawaban yang tepat untuk saya.

sudo pip uninstall backports.shutil_get_terminal_size
sudo pip install backports.shutil_get_terminal_size

Pip kemungkinan besar tidak akan terbiasa dengan sudo.
Menggunakan Sudo dengan pip adalah yang menyebabkan sistem rusak seperti ini
masalah menjelaskan.

Jika Anda perlu menggunakan Sudo maka ada yang salah dengan sistem Anda.

M

>

@ihincks Di FreeBSD hanya solusi Anda yang berfungsi! Terima kasih banyak!

FYI, saya mengalami masalah yang sama, tetapi hanya bisa mengatasi masalah shutil_get_terminal_size dengan menggunakan opsi --ignore-installed di pip. Tanpa itu, paket tidak akan menginstal ulang dengan benar.

pip install --ignore-installed backports.shutil_get_terminal_size

Tanggapan @AllanDaemon memecahkan masalah bagi saya!

Menghadapi masalah yang sama dan diselesaikan dengan menghapus dan menginstal ulang backports.shutil_get_terminal_size

pip uninstall backports.shutil_get_terminal_size
pip install backports.shutil_get_terminal_size

Saya memiliki masalah yang sama.
Setelah mencoba banyak solusi di atas, saya akhirnya menemukan bahwa masalahnya adalah karena pengaturan $PATH saya.
Mungkin sebelumnya saya pernah menggunakan opsi pip install --user , sehingga /home/jin/.local/lib/python2.7 saya ada di $PATH saya, di mana ada versi backports .
Saya memecahkan masalah ini dengan menghapus folder .local/lib/python2.7 .

Untuk menguji apakah itu masalah dengan Anda $PATH, Anda cukup mencoba

import sys
print sys.path

Masalah ini disebabkan oleh adanya "backport" di lokasi "Sistem" dan "Pengguna".
Di macOS saya, saya telah menginstal shutil_get_terminal_size ke dalam sistem, tetapi saya memiliki paket lain yang diinstal di rumah pengguna saya. Folder pengguna ini diutamakan dan Anda tidak mencari di System.
Instal semua paket python Anda, dengan --user bijaksana.
Jika macet Anda memaksa instal ulang dengan --user:
pip install --ignore-installed backports.shutil_get_terminal_size --user
Ini mungkin harus ditambahkan ke beberapa diagnostik karena selalu mengganggu saya

backports seharusnya menjadi 'paket namespace', yang diizinkan untuk menginstal subpaket di tempat yang berbeda seperti itu. Tapi sepertinya tidak bekerja dengan andal, dan saya tidak tahu mengapa. Saya tidak dapat mereproduksinya untuk men-debug secara lokal, dan upaya saya untuk men-debugnya melalui orang lain baru saja membingungkan.

@takluyver Pernahkah Anda melihat https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843898 ? 2-3 posting terakhir menarik.

Sayangnya itu kurang lebih seperti yang saya temukan - ada sesuatu yang mengacaukan paket namespace backports , tetapi kami tidak dapat menentukan apa atau bagaimana. Debian berkata, cukup dapat dibenarkan, bahwa itu bukan masalah mereka jika paket yang diinstal pip merusak sesuatu.

Saya berkomentar di sini https://github.com/chrippa/backports.shutil_get_terminal_size/issues/9#issuecomment -279021331 dan dirujuk di atas untuk menemukan perbedaan antara pemasangan roda vs. non-roda (non-biner) melalui pip, apakah itu sesuatu yang relevan?

Bagaimana dengan vendoring sebagai fallback untuk versi IPython berikutnya?

Apakah ini sesuatu yang dapat di-backport ke dalam shutil CPython?

Apakah ini sesuatu yang dapat di-backport ke dalam shutil CPython?

Kemungkinan tidak, kami sudah tidak menggunakan paket backport pada IPython 6.0/master, ini sudah ada di semua kandang CPython yang kami dukung, dan masalah hanya terjadi karena kami menggunakan paket backport pada 2.7 karena ini tidak dalam standar CPython 2.7.

Mengerti. Terima kasih @Carreau. Senang itu hanya akan menjadi masalah sementara.

Menghapus instalasi global, menghapus instalasi di virtualenv, dan menginstal ulang di virtualenv memperbaiki masalah bagi saya.

Yang Anda butuhkan hanya mengetik perintah di bawah ini:

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

Saya dulu memiliki masalah yang sama, dan ini menyelesaikannya.

Hai
masalah yang sama di Ubuntu 17.10 dengan ipython2.
Tidak Ada Masalah dengan python3

PERBAIKI: Sudo -H pip install --ignore-installed backports.shutil_get_terminal_size

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 17.10
Release:    17.10
Codename:   artful

$ python --version
Python 2.7.14

$ python3 --version
Python 3.6.3

$ pip show ipython
Name: ipython
Version: 5.1.0
Summary: IPython: Productive Interactive Computing
Home-page: http://ipython.org
Author: The IPython Development Team
Author-email: [email protected]
License: BSD
Location: /usr/lib/python2.7/dist-packages
Requires: backports.shutil-get-terminal-size, pathlib2, pexpect

$ pip3 show ipython
Name: ipython
Version: 5.1.0
Summary: IPython: Productive Interactive Computing
Home-page: http://ipython.org
Author: The IPython Development Team
Author-email: [email protected]
License: BSD
Location: /usr/lib/python3/dist-packages
Requires: pexpect

$ 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

$ apt-cache show python-ipython
Package: python-ipython
Architecture: all
Version: 5.1.0-3
Priority: optional
Section: universe/python
Source: ipython
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Python Modules Team <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1864
Depends: python-decorator, python-pexpect, python-pickleshare, python-pkg-resources, python-prompt-toolkit, python-pygments, python-simplegeneric, python-traitlets, python:any (<< 2.8), python:any (>= 2.7.5-5~), python-backports-shutil-get-terminal-size, python-pathlib2
Breaks: ipython (<< 4)
Replaces: ipython (<< 4)
Filename: pool/universe/i/ipython/python-ipython_5.1.0-3_all.deb
Size: 375048
MD5sum: 7ae68256eb7c6183634ea3680ad4449d
SHA1: 7e2916b5e661793dcb55e86404de5cd1f0d19d8b
SHA256: 0664f1d3c5543cc3ba4db4fcd8bf4526de714e3f35687b49052fad7831cbdee3
Homepage: https://github.com/ipython/ipython
Description-en: Enhanced interactive Python shell (Python 2 version)
 IPython can be used as a replacement for the standard Python shell,
 or it can be used as a complete working environment for scientific
 computing (like Matlab or Mathematica) when paired with the standard
 Python scientific and numerical tools. It supports dynamic object
 introspections, numbered input/output prompts, a macro system,
 session logging, session restoring, complete system shell access,
 verbose and colored traceback reports, auto-parentheses, auto-quoting,
 and is embeddable in other Python programs.
 .
 This package contains the backend terminal shell for Python 2: for
 the actual frontend install ipython.
Description-md5: 713480d81c0c64f1b3a9c4c9350ef96c

$ apt-cache show python3-ipython
Package: python3-ipython
Architecture: all
Version: 5.1.0-3
Priority: optional
Section: universe/python
Source: ipython
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Python Modules Team <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1864
Depends: python3-decorator, python3-pexpect, python3-pickleshare, python3-pkg-resources, python3-prompt-toolkit, python3-pygments, python3-simplegeneric, python3-traitlets, python3:any (>= 3.3.2-2~), python-pexpect
Breaks: ipython3 (<< 4)
Replaces: ipython3 (<< 4)
Filename: pool/universe/i/ipython/python3-ipython_5.1.0-3_all.deb
Size: 375114
MD5sum: c0585bf56c9fbcbb73aa45d25b8fbe14
SHA1: c7118d1050f50723d614a3060ad6d8d31a96e73c
SHA256: 293217ee356c2c2623efce3fc391b1876a38585b0ae7462b2a8a0d3f3424ec86
Homepage: https://github.com/ipython/ipython
Description-en: Enhanced interactive Python shell (Python 3 version)
 IPython can be used as a replacement for the standard Python shell,
 or it can be used as a complete working environment for scientific
 computing (like Matlab or Mathematica) when paired with the standard
 Python scientific and numerical tools. It supports dynamic object
 introspections, numbered input/output prompts, a macro system,
 session logging, session restoring, complete system shell access,
 verbose and colored traceback reports, auto-parentheses, auto-quoting,
 and is embeddable in other Python programs.
 .
 This package contains the backend terminal shell for Python 3: for
 the actual frontend install ipython.
Description-md5: 8182f91eff6e0e148e574a20d31e0f51

@nicola-lunghi tolong jangan menyarankan orang untuk menggunakan sudo pip , itu hanya akan merusak sistem Anda dengan cara yang lebih aneh dalam jangka panjang. Pip akan bertarung dengan manajer paket sistem atas beberapa file.

Itu sama dengan melepas baterai dari alarm Karbon Monoksida Anda karena secara teratur membangunkan Anda di malam hari. Ada yang salah dengan pemanas Anda; Anda membutuhkan perbaikan yang tepat.

Terima kasih @Carreau
Saya akan mengoreksi jawaban saya setelah memadamkan api di rumah saya.

Ps tolong perbaiki "heather" -> ketergantungan deb

Perbaikan termudah mungkin adalah menginstal versi IPython yang lebih baru dengan pip install --user ipython (flag --user berarti tidak perlu sudo). Kami telah mengatasi masalah ini di IPython, tetapi kami tidak dapat mengontrol paket Debian, dan pengguna yang menginstal melalui apt mendapatkan versi lama dari IPython.

Jika seseorang mengalami masalah yang sama dengan Cygwin dan python2 solusinya adalah menjalankan Cygwin setup.exe (atau salah satu apt-cyg utls) dan menginstal python2-backports.shutil_get_terminal_size . Ini tidak dipicu sebagai ketergantungan secara default sehingga perlu diinstal secara manual.

ipython3 baik-baik saja di luar kotak.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat