Ipython: لا توجد وحدة باسم shutil_get_terminal_size

تم إنشاؤها على ٢٣ يونيو ٢٠١٦  ·  71تعليقات  ·  مصدر: ipython/ipython

يوم جيد،
أنا أساهم في مشروع صغير لإنشاء نواة أعلى ipykernel. لقد مر وقت منذ أن لمسته ، واليوم عندما قمت بنشر بيئة تطوير جديدة عن طريق تثبيت Jupyter ، حصلت على تتبع المكدس التالي عند استدعاء 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

من الواضح أن شيئًا ما تغير منذ آخر استخدام لي لـ IPython و ipykernel. اي فكرة عن المشكلة؟ أنا أعمل على OSX Box مع Python 2.7.10.

أفضل ، Aurélien

التعليق الأكثر فائدة

يبدو أنك قمت بتثبيت IPython دون الحصول على تبعياته بطريقة أو بأخرى. نظرًا لأنني أرى البيض ، فهذا يعني على الأرجح أن لديك إصدارًا قديمًا جدًا من setuptools ، وربما تستخدم easy_install . أول الأشياء أولاً ، تأكد من أن لديك أدوات pip / setuptools حديثة نسبيًا:

pip install --upgrade setuptools pip

بعد ذلك ، حاول إعادة تثبيت IPython مع pip (لا تستخدم easy_install على الإطلاق ، إلا إذا كنت تعلم أن هناك سببًا جيدًا لعدم نجاح / عدم نجاح النقطة. هذه الحالات نادرة):

pip uninstall ipython
pip install ipython

ال 71 كومينتر

يبدو أنك قمت بتثبيت IPython دون الحصول على تبعياته بطريقة أو بأخرى. نظرًا لأنني أرى البيض ، فهذا يعني على الأرجح أن لديك إصدارًا قديمًا جدًا من setuptools ، وربما تستخدم easy_install . أول الأشياء أولاً ، تأكد من أن لديك أدوات pip / setuptools حديثة نسبيًا:

pip install --upgrade setuptools pip

بعد ذلك ، حاول إعادة تثبيت IPython مع pip (لا تستخدم easy_install على الإطلاق ، إلا إذا كنت تعلم أن هناك سببًا جيدًا لعدم نجاح / عدم نجاح النقطة. هذه الحالات نادرة):

pip uninstall ipython
pip install ipython

في هذه الحالة على وجه التحديد ، قمنا بإضافة تبعية على backports للحزمة.

شكرا لملاحظاتك السريعة! ومع ذلك ، فإن اللغز يتعمق. يبدو أن تثبيت Jupyter عبر نقطة على سطر الأوامر يؤدي إلى نتيجة مختلفة عن تعيين Jupyter كشرط عند استخدام setuptools . بينما نجح النهج الأول ، فشل النهج الثاني بالنسبة لي. فيما يلي خطوات إعادة إظهار هذه المشكلة:

أولاً ، نبدأ بمترجم Python 2.7.11 المجرد ، مع تثبيت ثلاث حزم فقط:

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

إذا قمت بتثبيت Jupyter باستخدام pip ، فكل شيء يعمل بشكل جيد ، وحصلت على الحزم التالية:

$ 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)

ومع ذلك ، إذا حاولت تثبيت Jupyter كشرط لمشروع من خلال الحصول على البرنامج النصي التالي setup.py (لاحظ أنني أعيد التشغيل من مترجم 2.7.11 جديد باستخدام الوحدات الأساسية الثلاث pip ، setuptools و virtualenv ):

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

.. ثم تفشل:

$ 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

ومن المثير للاهتمام ، عند سرد الحزم التي _ تم تثبيتها _ يمكننا أن نرى أن ipython و jupyter-console أصبحا الآن الإصدارين 5.0.0b4 و 5.0.0b1 ، على التوالي بدلاً من 4.2.0 و 4.1.1 على النحو الوارد أعلاه عند تثبيت Jupyter مع نقطة. ها هي الحزم:

$ 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)

ربما أفتقد شيئًا ما هنا ، لكني لست متأكدًا مما يحدث. هل لديك أي فكرة عن سبب فشل استخدام jupyter كإعتماد في برنامج بنظام setuptools setup.py هنا؟

أفضل،
Aurélien

يشير ذلك إلى أن setuptools ربما تحصل على إصدار مختلف عند استيرادها من قائمة pip (خطأ معروف ناتج عن أدوات setuptools القديمة). ماذا تحصل من:

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

و أيضا:

python -m site

إنه أيضًا شيء قد لا يكون مألوفًا أنه إذا كنت تستخدم setuptools في setup.py ، فلا يجب عليك أبدًا القيام بـ python setup.py install ، فقط pip install . .

فيما يلي النواتج:

$ 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')

و

$ 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

إنه أيضًا شيء قد لا يكون مألوفًا أنه إذا كنت تستخدم setuptools في setup.py ، فلا يجب عليك أبدًا القيام بـ python setup.py install ، فقط pip install . .

هذا مثير للاهتمام للغاية ، وقد يكون علامة على أنني بحاجة إلى تحديث معلوماتي حول pip install . في المجلد الذي يحتوي على البرنامج النصي الخاص بي setup.py أعلاه ، تمكنت من تثبيت Jupyter وتوابعه بنجاح. شكرا!

كسؤال جانبي ، لماذا لم يعمل مع python setup.py install ؟ لم أتمكن من العثور على أي مرجع عبر الإنترنت حول سبب حدوث ذلك.

أفضل ، Aurélien

python setup.py install يفعل نفس الشيء مثل easy_install. يقوم easy_install بالكثير من الأشياء غير السارة ، وهذا هو سبب إنشاء النقطة. لأسباب تتعلق بالتوافق مع الإصدارات السابقة ، فإن python setup.py install مع أدوات الإعداد المستوردة سيفعل دائمًا الأشياء غير المرغوب فيها التي يفعلها easy_install ، وبالتالي لا ينبغي أبدًا استدعاؤها.

أحصل على هذا الخطأ فقط إذا قمت بتثبيت ipython في virtualvenv المشتركة على NFS. أي أدلة لماذا التثبيت في venv على NFS يمكن أن يسبب هذه المشكلة؟

لست متأكدًا من سبب قيام NFS بإحداث فرق ، ولكن تحقق من إصدار النقطة داخل virtualenv ، وإذا لم يكن هو الأحدث ، فحاول تحديثه:

pip install --upgrade setuptools pip

takluyver نفس النقطة التي تقوم بتثبيت ipython fine في نظام الملفات "العادي" ، لا يتم تثبيتها بشكل صحيح على NFS. ونعم ، هذا هو أحدث إصدار من النقطة.

غريب. لا توجد فكرة عن سبب تأثير NFS على ذلك.

تواجه أيضًا هذه المشكلة مع Python 2.7 باستخدام أحدث pip (8.1.2) وأحدث setuptools (25.1.6). أليس من الممكن أن يكون هناك شيء آخر يحدث؟

كان تثبيت backports.shutil_get_terminal_size بـ pip مسبقًا حلاً فعالاً لهذه المشكلة.

كما هو مذكور في مكان آخر ، ضع PR (https://github.com/paulgb/runipy/pull/125) معًا لإظهار الخطأ backports.shutil_get_terminal_size و entrypoints خطأ. يُظهر الالتزام الأول الخطأ الأول ويظهر الالتزام الثاني الخطأ الثاني. في كلتا الحالتين ، تكون أول 3 عناصر مدمجة في المصفوفة ذات أهمية. كل هؤلاء الثلاثة يستخدمون setuptools لتثبيت كل شيء.

يبدو وكأنه مشكلة في setuptools. التثبيت باستخدام النقطة (كما يجب أن يتم ذلك دائمًا) سيعمل على إصلاحه .

لست متأكدًا بنسبة 100٪ مما فشلت أدوات setuptools في القيام به ، على الرغم من ذلك.

لقد واجهت للتو نفس النوع من المشاكل في تثبيت IPython (وليس Jupyter) في إصدار 2.7.3 virtualenv جديد. يبدو أن IPython قد تم تثبيته ولكنه كان يفتقد pathlib2 ثم backports.shutil-get-terminal-size . عمل pip install على كل تبعيات ثابتة و IPython يعمل الآن.

$ 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]: 

هل يمكنك عمل pip --version ؟ أعتقد أن لديك نسخة قديمة جدًا من النقطة.

نعم أنت على صواب. كنت على النقطة 1.4.1.

كررت التمرين بعد ترقية Virtualenv الخاص بي إلى pip 8.1.2 و IPython 5.0.0 مثبتًا بدون مشكلة.

$ 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

أواجه هذه المشكلة أيضًا على 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

لقد حاولت عمل sudo pip install --upgrade --force-reinstall ipython (بالإضافة إلى إعادة تثبيت pip و setuptools) بدون حظ.

بعد إجراء بعض التحقيقات ، أعتقد أن الوحدة النمطية backports.shutil_get_terminal_size نفسها معطلة:

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⟫

ومن المثير للاهتمام أن الوحدة النمطية backports بتثبيت نسختين (مختلفتين قليلاً ؟!) من نفسها:

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

وترقيع IPython / utils / terminal.py لاستخدام أعمال shutil_backports.get_terminal_size. إذهب واستنتج.

أهلا،

كنت أحصل على نفس الخطأ في virtualenv. كنت أستخدم النقطة لتثبيت jupyter.

كنت أحصل عليه
ImportError: لا توجد وحدة باسم shutil_get_terminal_size

_ أظهر "تجميد النقطة" backports.shutil-get-terminal-size == 1.0.0_

لذلك حاولت الترقية. أظهرت:

_pip install --upgrade backports.shutil-get-terminal-size_
تم تحديث المتطلبات بالفعل: backports.shutil-get-terminal-size in /Library/Python/2.7/site-packages

لذلك كان الوصول إلى مكتباتي العالمية بطريقة ما وليس تلك الموجودة في venv.

ثم قمت بإلغاء تثبيت backports.shutil-get-terminal-size من python العالمي وقمت بتثبيته في venev الخاص بي. الآن تعمل بشكل جيد.

يمكنني إعادة إنتاج هذا 100٪ من الوقت مع هذا التثبيت

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

يمكنني إعادة إنتاج هذا 0٪ من الوقت مع هذا التثبيت

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

لاحظ أنه باستخدام --user ، يتم تثبيت أداة Python لسطر الأوامر عند ~/Library/Python/2.7/bin/ipython بدلاً من /usr/local/bin

AndrewHoos وبالنسبة لي ، يحصل كلا الأمرين على التبعيات بشكل صحيح. ماذا تحصل من pip --version ؟ يجب أن يكون 8. على الأقل ، إذا لم يكن كذلك ، فتأكد من تحديث أدوات الإعداد والنقطة:

pip install --upgrade setuptools pip

لقد واجهت هذه المشكلة مع دفتر الملاحظات 4.2.2 و ipython 5.1.0 المثبت بـ conda . كما ذكرنا سابقًا ، لقد تم تثبيت 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

ومع ذلك ، في قذيفة Python العادية ، يفشل الأمر import backports.shutil_get_terminal_size .

حسنًا ، لقد وجدت حلاً بسيطًا ولكنه بسيط: قم بإلغاء التثبيت والتثبيت مرة أخرى. يعمل الآن ipython ....

$ 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

واجهت أيضا هذه المشكلة
للأسف ، لم يكن هناك شيء ساعد كثيرًا ، ولكن المشكلة تمامًا كما ذكرت أعلاه:

ImportError: لا توجد وحدة باسم shutil_get_terminal_size

لم يكن إلغاء تثبيت وتثبيت IPython والمنافذ الخلفية أمرًا ممتعًا.

كانت المشكلة أنني قمت بتثبيت Jupyter & friends على مستوى العالم ، وتم تثبيت shutil_get_terminal_size عالميًا. أي في /Library/Python/2.7/site-packages/shutil_backports/

ومع ذلك ، كان لدي أيضًا backports.functools_lru_cache مثبتًا محليًا ، وهذا في الواقع منع استيراد shutil_backports.

لاختبار ما إذا كانت هذه هي المشكلة: ls ~ / Library / Python / 2.7 / lib / python / site -pack (في OSX ، إذا رأيت منافذ خلفية للمجلد ، فمن المحتمل أن يكون ذلك على خطأ. لقد ألغيت تثبيت المكتبة من مكتبة المستخدم و أضافته إلى مكتبة النظام. في كلتا الحالتين ، لن تخلط وتطابق المنافذ الخلفية. يجب أن تكون عالمية أو محلية لتعمل بشكل كامل.

نفس المشكلة في Debian Sid (غير مستقر) محدثة بالكامل. لقد قمت بتحديث النقطة. حاول إلغاء التثبيت والتثبيت مرة أخرى من جديد ؛ إلخ. لا شيء يعمل.

# 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

إلغاء تثبيت وتثبيت backports.shutil_get_terminal_size يعمل مرة أخرى.

+1 في OSX. نفس المشكلة ، - قم بإلغاء تثبيت العالمية وتثبيته في أعمال Virtualenv ويشير إلى المحلي.

Hiczeke حاولت ذلك ولم ينجح

بعد تجربة الكثير من الأشياء ، كان الأمر الأخير الذي تم حله هو تحديث setuptools
أوصي:

  • قم بإلغاء تثبيت أي حزم نظام ، مثل debian ipython و python-backports-shutil-get-terminal-size
  • الإزالة بنقطة: ipython ، jupyter و backports.shutil_get_terminal_size
  • ترقية pip و setuptools: نقطة تثبيت - ترقية setuptools pip`
  • أعد تثبيت ipython (وغيره) بنقطة: pip install ipython jupyter

أدى ما يلي إلى حل المشكلة بالنسبة لي:
نقطة إلغاء backports.shutil_get_terminal_size
نقطة تثبيت backports.shutil_get_terminal_size

تضمين التغريدة
شكرا جزيلا!
إعادة تثبيت "backports.shutil_get_terminal_size" عملت بشكل جيد بالنسبة لي.

تثبيت نقطة - ترقية - فرض إعادة تثبيت ipython

أدى هذا إلى إصلاح المشكلة على جهاز Mac الخاص بي

أنا في حيرة من أمري:

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

ثابت من أجلك ، إيان.

sudo pip إلغاء تثبيت backports.shutil_get_ terminal _size

sudo pip install backports.shutil_get_ terminal _size

يوم الأربعاء ، 25 كانون الثاني (يناير) 2017 ، الساعة 12:52 مساءً Ian Hincks [email protected]
كتب:

أنا في حيرة من أمري:

sudo pip إلغاء تثبيت backports.shutil_get_window_size

لا يمكن إلغاء تثبيت متطلبات backports.shutil-get-window-size ، غير مثبت

sudo pip تثبيت backports.shutil_get_window_size

تعذر العثور على إصدار يلبي متطلبات backports.shutil_get_window_size (من الإصدارات:)
لم يتم العثور على توزيع مطابق لـ backports.shutil_get_window_size

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/ipython/ipython/issues/9656#issuecomment-275197674 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ATln0kDS_u6PaTk6Qunjc_oEtKCv_-cRks5rV5n7gaJpZM4I9MnS
.

@ بول ريختر آه ، شكرا :)

لم تنجح أي من عناصر إلغاء التثبيت / إعادة التثبيت بالنسبة لي. ما نجح معي في النهاية اقترحه /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py وقم بتغيير الخط

from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size

إلى

from shutil_backports import get_terminal_size as _get_terminal_size

ihincks : تعليقك حل مشكلتي على osx 😃

لقد صادفت هذا الخطأ اليوم على OS X 10.12.3. حل ما يلي:

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

لا أعتقد أن هذا خطأ ipython. يوصي بالإغلاق.

أنا متأكد من أنه ليس خطأ IPython ، لكنني أتمنى أن أتمكن من معرفة الخطأ الذي يحدث بالفعل حتى نتمكن من تقديم حلول أفضل للناس من إعادة التثبيت + الأمل ...

@ pierre-haessig يمكنك حفظ يومي. شكرا جزيلا.

ihincks جربت جميع

يعمل الإصلاح بواسطة ihincks أيضًا على نظام التشغيل windows 10

آمل أن يساعد شخص ما.
في حالتي ، وجدت أن أصل المشكلة هو إصدار ipython الخاطئ:

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

لا أعرف كيف يمكن أن يحدث ذلك لأنني لا أملك نسخة من python3 على الإطلاق.
تم حل مشكلتي عندما ألغيت تثبيت Python وأزلت المكتبات ذات الصلة

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

لقد أعدت تثبيت Python وتأكد من أن النقطة بها الإصدار والموقع الصحيحين.
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
pip2 install ipython

تضمين التغريدة

هذا هو الجواب الصحيح الوحيد بالنسبة لي.

sudo pip إلغاء تثبيت backports.shutil_get_terminal_size
sudo pip تثبيت backports.shutil_get_terminal_size

من المحتمل ألا يتم استخدام Pip مع sudo.
استخدام sudo مع النقطة هو ما يؤدي إلى تعطل الأنظمة بهذه الطريقة
يصف القضية.

إذا كنت بحاجة إلى استخدام sudo ، فهناك خطأ ما في نظامك.

م

>

ihincks على FreeBSD فقط الحل الخاص بك يعمل! شكرا جزيلا!

لمعلوماتك ، واجهت نفس المشكلة ، لكن لم أتمكن إلا من التغلب على مشكلة shutil_get_terminal_size باستخدام الخيار --ignore-installed بالنقطة. بدونها ، لن يتم إعادة تثبيت الحزمة بشكل صحيح.

pip install --ignore-installed backports.shutil_get_terminal_size

حل رد AllanDaemon المشكلة بالنسبة لي!

واجهت مشكلة مماثلة وتم حلها عن طريق إلغاء تثبيت وإعادة تثبيت backports.

نقطة إلغاء backports.shutil_get_terminal_size
نقطة تثبيت backports.shutil_get_terminal_size

كان لي نفس المشكلة.
بعد تجربة العديد من الحلول أعلاه ، وجدت أخيرًا أن المشكلة ترجع إلى إعداد $ PATH.
ربما سبق لي أن استخدمت الخيار pip install --user ، لذلك كان /home/jin/.local/lib/python2.7 موجودًا في $ PATH ، حيث يوجد إصدار آخر من backports .
لقد قمت بحل هذا الإصدار عن طريق حذف المجلد .local/lib/python2.7 .

لاختبار ما إذا كانت مشكلة مع $ PATH ، يمكنك ببساطة المحاولة

import sys
print sys.path

سبب المشكلة هو وجود "backports" في كل من مواقع "النظام" و "المستخدم".
على نظام macOS الخاص بي ، قمت بتثبيت shutil_get_terminal_size في النظام ، ولكن كان لدي حزمة أخرى مثبتة في منزل المستخدم الخاص بي. مجلد المستخدم هذا له الأسبقية وأنت لا تبحث في النظام.
قم بتثبيت جميع حزم python الخاصة بك ، مع --user هو الحكمة.
إذا فرضك عالق عليك إعادة التثبيت مع --user:
pip install --ignore-installed backports.shutil_get_terminal_size --user
ربما ينبغي أن يضاف هذا إلى بعض التشخيصات لأنه يزعجني في كل مرة

backports المفترض أن يكون

takluyver هل رأيت https://bugs.debian.org/cgi-bin/bugreport.cgi؟bug=843898 ؟ آخر 2-3 وظائف مثيرة للاهتمام.

لسوء الحظ ، يبدو أن هذا يبدو أكثر أو أقل مما وجدته - هناك شيء ما يفسد حزمة مساحة الاسم backports ، لكن لا يمكننا معرفة ماذا أو كيف. قال دبيان ، على نحو مبرر تمامًا ، إنها ليست مشكلتهم إذا عطلت الحزم المثبتة بنقطة الأشياء.

لقد علقت هنا https://github.com/chrippa/backports.shutil_get_terminal_size/issues/9#issuecomment -279021331 والمشار إليها أعلاه في العثور على فرق بين تثبيت العجلة مقابل تثبيت غير العجلة (غير ثنائي) عبر النقطة ، أي شيء ذي صلة؟

ماذا عن البيع كبديل للإصدار التالي من IPython؟

هل هذا شيء يمكن نقله إلى إغلاق CPython؟

هل هذا شيء يمكن نقله إلى إغلاق CPython؟

من المحتمل لا ، نحن بالفعل لا نستخدم الحزمة backport على IPython 6.0 / master ، هذا موجود بالفعل في جميع إسطبلات CPython التي ندعمها ، وتحدث المشكلة فقط لأننا نستخدم الحزمة backport على 2.7 لأن هذا ليس في معيار CPython 2.7.

فهمتك. Carreau شكرا. سعيد أنها ستكون مشكلة مؤقتة فقط.

أدى حذف التثبيت العام وإلغاء التثبيت في virtualenv وإعادة التثبيت في virtualenv إلى حل المشكلة بالنسبة لي.

ما تحتاجه فقط قم بكتابة الأوامر التالية:

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

اعتدت أن أواجه نفس المشكلة ، وهذا يحلها.

أهلا
نفس المشكلة على Ubuntu 17.10 مع ipython2.
لا توجد مشكلة مع python3

تصحيح: sudo -H pip install - 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 من فضلك لا تنصح الناس باستخدام sudo pip ، فهذا سيؤدي فقط إلى كسر نظامك بطريقة أغرب على المدى الطويل. سيتشاجر Pip مع مدير حزم النظام على بعض الملفات.

هذا يعادل إزالة البطارية من جهاز إنذار أول أكسيد الكربون لأنه يوقظك بانتظام في الليل. هناك عطل ما في السخان ؛ أنت بحاجة إلى الإصلاح المناسب.

Carreau شكرا
سأصحح إجابتي بعد إطفاء الحريق في منزلي.

ملاحظة الرجاء إصلاح "الخلنج" -> تبعيات ديب

من المحتمل أن يكون الحل الأسهل هو تثبيت إصدار أحدث من IPython باستخدام pip install --user ipython (تعني علامة --user أنه لا يحتاج إلى sudo). لقد عملنا بالفعل على حل هذه المشكلة في IPython ، لكن لا يمكننا التحكم في حزم دبيان ، ويحصل المستخدمون الذين يقومون بالتثبيت من خلال apt على إصدار قديم من IPython.

في حالة مواجهة شخص ما لنفس المشكلة مع Cygwin و python2 ، يكون الحل هو تشغيل Cygwin setup.exe (أو أحد برامج apt-cyg utls) وتثبيت python2-backports.shutil_get_terminal_size . لا يتم تشغيل هذا باعتباره تبعية بشكل افتراضي لذا يجب تثبيته يدويًا.

ipython3 بخير من خارج منطقة الجزاء.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

ghost picture ghost  ·  4تعليقات

ericdill picture ericdill  ·  3تعليقات

quchunguang picture quchunguang  ·  3تعليقات

ederag picture ederag  ·  3تعليقات

peter-ch picture peter-ch  ·  4تعليقات