يوم جيد،
أنا أساهم في مشروع صغير لإنشاء نواة أعلى 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
في هذه الحالة على وجه التحديد ، قمنا بإضافة تبعية على 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
أوصي:
ipython
و python-backports-shutil-get-terminal-size
ipython
، jupyter
و backports.shutil_get_terminal_size
pip
و setuptools:
نقطة تثبيت - ترقية setuptools pip`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 يمكنك حفظ يومي. شكرا جزيلا.
يرجى مراجعة https://github.com/chrippa/backports.shutil_get_terminal_size/issues/9#issuecomment -279021331
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 مع النقطة هو ما يؤدي إلى تعطل الأنظمة بهذه الطريقة
يصف القضية.
م
>
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 بخير من خارج منطقة الجزاء.
التعليق الأكثر فائدة
يبدو أنك قمت بتثبيت IPython دون الحصول على تبعياته بطريقة أو بأخرى. نظرًا لأنني أرى البيض ، فهذا يعني على الأرجح أن لديك إصدارًا قديمًا جدًا من setuptools ، وربما تستخدم
easy_install
. أول الأشياء أولاً ، تأكد من أن لديك أدوات pip / setuptools حديثة نسبيًا:بعد ذلك ، حاول إعادة تثبيت IPython مع pip (لا تستخدم easy_install على الإطلاق ، إلا إذا كنت تعلم أن هناك سببًا جيدًا لعدم نجاح / عدم نجاح النقطة. هذه الحالات نادرة):