تحديث من @ carreau :
إعادة الفتح ، ووضع علامات 5.4 علينا البائع shutil_get_terminal_size.
بعد تثبيت ipython sudo apt-get install ipython-notebook
، ipython
يظهر خطأ كما يلي:
jiangyuping @ Lenovo : ~ ipython دولار
Traceback (آخر مكالمة أخيرة):
ملف "/ usr / local / bin / ipython" ، السطر 4 ، بتنسيق
من IPython استيراد start_ipython
ملف "/usr/local/lib/python2.7/dist-packages/IPython/ init .py" ، السطر 48 ، في
من تطبيق استيراد .core.application
ملف "/usr/local/lib/python2.7/dist-packages/IPython/core/application.py" ، السطر 25 ، في
من إصدار استيراد IPython.core ، معالج التعطل
ملف "/usr/local/lib/python2.7/dist-packages/IPython/core/crashhandler.py" ، السطر 28 ، في
من IPython.core استيراد ultratb
ملف "/usr/local/lib/python2.7/dist-packages/IPython/core/ultratb.py" ، السطر 128 ، في
من IPython.utils.terminal الاستيراد get_terminal_size
ملف "/usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py" ، السطر 22 ، في
من backports.shutil_get_terminal_size استيراد get_terminal_size كـ _get_terminal_size
ImportError: لا توجد وحدة باسم shutil_get_terminal_size
لديك نسخة أحدث من IPython مثبتة خارج apt ، وتتطلب الحزمة backports.shutil_get_terminal_size . استخدم pip
لتثبيت ذلك.
takluyver بعد pip install ipython
، يبدو
jiangyuping @ Lenovo : ~ / ipython $ pip تثبيت ipython
المتطلبات مستوفاة بالفعل (استخدم - ترقية للترقية): ipython في /usr/local/lib/python2.7/dist-packages
ثم يظهر ، ipython
jiangyuping @ Lenovo : ~ / ipython $ ipython
Traceback (آخر مكالمة أخيرة):
ملف "/ usr / local / bin / ipython" ، السطر 4 ، بتنسيق
من IPython استيراد start_ipython
ملف "/ home / jiangyuping / ipython / IPython / init .py" ، السطر 48 ، في
من تطبيق استيراد .core.application
ملف "/home/jiangyuping/ipython/IPython/core/application.py" ، السطر 25 ، في
من إصدار استيراد IPython.core ، معالج التعطل
ملف "/home/jiangyuping/ipython/IPython/core/crashhandler.py" ، السطر 28 ، في
من IPython.core استيراد ultratb
ملف "/home/jiangyuping/ipython/IPython/core/ultratb.py" ، السطر 128 ، في
من IPython.utils.terminal الاستيراد get_terminal_size
ملف "/home/jiangyuping/ipython/IPython/utils/terminal.py" ، السطر 22 ، في
من backports.shutil_get_terminal_size استيراد get_terminal_size كـ _get_terminal_size
ImportError: لا توجد وحدة باسم shutil_get_terminal_size
قصدت:
pip install backports.shutil_get_terminal_size
ومع ذلك ، إذا لم يكن ذلك بمثابة تبعية لـ IPython ، فربما يعني ذلك أن لديك نسخة قديمة من النقطة. لترقيته:
pip install --upgrade setuptools pip
شكرا لك ، تم التثبيت بنجاح.
لقد جربت الكثير من الأشياء. آخر حل تم حله كان تحديث setuptools
. لقد قمت أيضًا بتحديث النقطة وإعادة تثبيت ipython ، إلخ.
شكرا! لكن هذا لم ينفع بالنسبة لي. لكنها أعطتني فكرة ... لقد قمت بتثبيت نقطة - تمت ترقيته بملف whl من backports.shutil_get_terminal_size
قبل ذلك ، أدى إجراء تثبيت نقطة ببساطة إلى "تلبية المتطلبات بالفعل" وما إلى ذلك.
يمكنني الآن تشغيل GraphLab Create من توري :)
jnault أواجه نفس المشكلة لأنني حاولت تثبيت GraphLab Create من توري. ما هي الأوامر التي استخدمتها بالضبط؟
لا أتذكر بالضبط ، لكنني أتذكر أنه من السهل جدًا. خطواتي:
1) ابحث في Google عن هذا الملف بالملحق .whl و
2) جوجل البحث عن كيفية تثبيت ملف Whl
جلالة الملك حسنا يبدو أن snarky أو شيء من هذا. أنا صادق ومحاولة المساعدة. لكن هذا ما فعلته حرفيًا. بالتأكيد، جاء الملف من Pypi. أعتقد أن ملف whl يمكنه تثبيت أي شيء ، لذلك تأكدت من أنه جاء من مصدر حسن السمعة.
أظن أن الأمر كان: تثبيت النقطة - ترقية backports.shutil_get_terminal_size.whl
oschow هذا _should_ العمل بشكل عام:
# start by making sure pip, setuptools are up to date:
pip install --upgrade setuptools pip
# uninstall if pip thinks you already have it but don't seem to:
pip uninstall backports.shutil_get_terminal_size
# install it again with out definitely-up-to-date pip:
pip install --upgrade backports.shutil_get_terminal_size
^ لدى مينرك نصيحة أفضل.
Minrk ، لقد كتبت "إذا اعتقدت بيب أنك تمتلكها بالفعل ولكن لا يبدو أنك تمتلكها". إذن ، من المحتمل أن الملف قد تمت جدولته في تثبيت Python الأولي ولكن لم يتم تفويته بعد ذلك؟ وبالتالي فهي مدرجة على أنها موجودة ولكن في الحقيقة ليست كذلك؟
واجهت نفس المشكلة عند محاولة تثبيت Graphlab Create. حلها حل minrk لي أيضًا.
minrk كان لديه الحل العملي بالنسبة لي ، مجرد إلغاء تثبيت متبوعًا بتثبيت يعمل بالنسبة لي.
هذا ما فعلته.
نقطة إلغاء backports.shutil_get_terminal_size
تثبيت نقطة - ترقية backports.shutil_get_terminal_size
إزالة <path-to>/Python/2.7/site-packages/backports/__init__.*
@ بيفيس وبعد ذلك؟
حتى الآن لم أتمكن من الإصلاح بأي من الاقتراحات الموجودة في هذا الموضوع أو أي موضوع آخر.
إذا ركضت
$ python -s
>>> from backports.shutil_get_terminal_size import get_terminal_size
>>> get_terminal_size()
terminal_size(columns=112, lines=40)
إنها تعمل. لكن تشغيل دفتر ipython أو jupyter يعطيني نفس الخطأ ، الذي لم يعثر عليه shutil_get_terminal_size
أعتقد أن هذا يعني أن لديك حزمة أخرى backports.<something>
مثبتة في مكان ما أفسدت آلات حزم مساحة الاسم. ربما ستحتاج إلى العثور على ذلك وإلغاء تثبيته. جرب pip list
لمشاهدة كافة الحزم المثبتة.
takluyver شكرا على الرد السريع.
هذا ما وجدته:
backports-abc (0.4)
backports.shutil-get-terminal-size (1.0.0)
backports.ssl-match-hostname (3.4.0.2)
ماذا يمكنني أن أفعل الآن؟
قم بإلغاء تثبيت backports.ssl-match-hostname
و backports.shutil-get-terminal-size
وتثبيتهما مرة أخرى.
هل يتعين علي "إعادة تشغيل" الأناكوندا أو أي شيء حتى تدخل التغييرات حيز التنفيذ؟ لم تنجح إزالة تثبيت الحزم التي ذكرتها وإعادة تثبيتها.
لا ، ليس هناك إعادة تشغيل. فقط للتأكد ، بعد إزالة تثبيتها ، حاول إلغاء التثبيت مرة أخرى. كرر حتى لا تجد أي شيء لإزالته. في بعض الأحيان توجد نسخ في أماكن مختلفة.
إذا كان هذا لا يزال لا يعمل ، فحاول إلغاء تثبيت backports.ssl-match-hostname
وتركه غير مثبت (على الأقل حتى تجد ما يحتاجه ...)
على ما يرام. لقد جربت كل ما قلته ، لكن لا شيء يعمل. ما هي خياراتي؟ بدأت المشكلة عندما قمت بتثبيت pymc3. الأمر الآخر هو أنني قمت بتغيير بعض البرامج النصية لإضافة بعض الوحدات النمطية إلى مربع أدوات nipype. هل يجب علي إزالة كل شيء وتثبيته مرة أخرى؟ آمل أن يكون هذا هو الملاذ الأخير.
ما الذي تحاول تجربته في نفس لغة Python التي تحاول تشغيل IPython بها:
import backports
print(backports)
لقد قمت بتشغيله مع وجود منافذ خلفية مثبتة:
>>> import backports
>>> print(backports)
<module 'backports' from '/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/
ثم قم بإلغاء تثبيتها وتشغيلها مرة أخرى:
>>> import backports
>>> print(backports)
<module 'backports' (built-in)>
لذلك من الواضح أن لدي بعض الحزم المضمنة في مكان ما والتي تعمل على إفساد الأشياء. لكن ليس لدي أي فكرة عن كيفية العثور عليهم. حتى لو وجدتهم ، فقد لا أتمكن من تغيير أي شيء لأنني لا أمتلك أذونات جذر.
هل هناك أي شيء آخر في المجلد أظهره لك هناك ( /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/
)؟
كلا ، الآن بعد أن تم إلغاء تثبيته ، فإن المجلد مفقود تمامًا. كما هو المجلد
../site-packages/backports.shutil-get-terminal-size-1.0.0
الذي كان موجودًا عندما تم تثبيته.
هل يمكنك التحقق من backports.__path__
في بايثون؟
بدون تثبيت خلفي:
['/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']
هذا هو نفس الدليل كما كان من قبل؟ هل هو مفقود بالتأكيد ؟ لا أفهم كيف يمكن أن يجد هذا المسار إذا لم يكن هناك شيء.
لقد بحثت عن جميع المنافذ الخلفية الممكنة في دليل anaconda2_serverwide. لست متأكدًا مما يعنيه كل هذا.
هذا ما وجدته:
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/future-0.15.2-py27_0/lib/python2.7/site-packages/future/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/configparser-3.5.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/ssl_match_hostname-3.4.0.2-py27_1/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/get_terminal_size-1.0.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/future/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_bak
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/get_terminal_size-1.0.0-py27_0/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/ssl_match_hostname-3.4.0.2-py27_1/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0.tar.bz2
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1.tar.bz2
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc-0.4-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc-0.4-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports-1.0-py27_0.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports_abc-0.4-py27_0.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports.shutil_get_terminal_size-1.0.0-py27_1.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc.py
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc.py
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc.pyc
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc.pyc
هل أعدت تشغيل Python بعد إزالة تثبيت backports
؟ إذا لم يكن كذلك ، فهل يمكنك إعادة تشغيل Python والتحقق من backports.__path__
مرة أخرى؟ لا أعرف بأي طريقة يمكن من خلالها تحديد هذا المسار إذا لم يكن هناك ملف.
كيف يمكنني إعادة تشغيل بيثون؟
لقد جربت أيضًا ما يلي:
> conda list | grep backports
backports 1.0 py27_0
backports.shutil_get_terminal_size 1.0.0 py27_1 conda-forge
backports_abc 0.4 py27_0
لذلك استخدمت conda لإزالة backports.shutil_get_terminal_size:
> conda uninstall backports.shutil_get_terminal_size
عندما أحاول الآن استيراد backports.shutil_get_terminal_size في بيثون ، لم أجده. لذلك أزلت ipython و jupyter وأعدت تثبيت ipython من خلال conda الذي قام أيضًا بتثبيت jupyter و backports.shutil_get_terminal_size. ومع ذلك ، _لا يزال _ لا يعمل! أنا محتار.
ثم أزلت التركيبات من خلال conda وأعدت تثبيتها من خلال الأنابيب. _لا يزال_ لا يعمل ....
كيف يمكنني إعادة تشغيل بيثون؟
أغلقه ( exit()
) ثم أعد تشغيله.
تم التحقق من وجود جوازات خلفية:
> conda list | grep backports
backports 1.0 py27_0
backports.shutil_get_terminal_size 1.0.0 py27_1 conda-forge
backports_abc 0.4 py27_0
ران بيثون بعد إعادة تشغيله:
>>> import backports
>>> backports.shutil_get_terminal_size
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'shutil_get_terminal_size'
حاولت ترقيته:
> pip install --upgrade backports.shutil_get_terminal_size
Requirement already up-to-date: backports.shutil_get_terminal_size in /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages
أنا لا أفهم. ماذا يمكنني أن أفعل؟ هل يمكنني تعديل ´terminal.py´ لتوجيهها في الاتجاه الصحيح؟
إذا قمت بإلغاء تثبيت جميع حزم backports ، فأعد تشغيل Python وتحقق من:
import backports
backports.__path__
على ماذا تحصل؟
>>> import backports
>>> backports.__path__
['/home/raid2/mihai/.local/lib/python2.7/site-packages/backports', '/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']
هل تم تثبيت أي شيء في الدليل السابق (الدليل الموجود تحت /home/raid2
)؟
هذا هو الدليل حيث يتم تخزين حزم python و ipython على مستوى النظام. أنا لا أستخدمها ، مع ذلك ، لأنني أستخدم تثبيت الأناكوندا المحلي. ولا ينبغي أن تتدخل. يقال الحقيقة ، تحت / home / raid2 ... Directorey لا توجد حزمة backports.shutil_get_terminal_size.
عندما أقوم بتشغيل التثبيت على مستوى النظام (الذي يحتوي على إصدار أقدم من ipython) ، فإنه يعمل بشكل جيد. ولكن عندما أبدأ بيئتي مع أحدث تثبيت أناكوندا
export PATH="/nobackup/archimedes1/Glad/anaconda2_serverwide/bin:$PATH"
، فشل في إيجاد وظيفة حجم النافذة.
لقد أنشأت برنامجًا نصيًا لمحاولة المساعدة في تصحيح هذا الخطأ. هل يمكنك تشغيله ونشر الإخراج؟
https://gist.github.com/takluyver/73cf4e7e7cff4d95f3b23ea80d59bcab
حسنًا !!! 1
هذا ما فعلته لجعله يعمل بطريقة ما.
تم إلغاء تثبيت ipython و jupyter و backports.shutil_get_window_size مع كل من conda و pip:
conda uninstall jupyter ipython backports.shutil_get_window_size
pip uninstall jupyter ipython backports.shutil_get_window_size
لقد تأكدت من عدم وجود أي شيء متبقي من أي طرد. ثم أعدت تثبيت ipython فقط مع conda:
> conda install ipython
Fetching package metadata .........
Solving package specifications: ..........
Package plan for installation in environment //nobackup/archimedes1/Glad/anaconda2_serverwide:
The following NEW packages will be INSTALLED:
backports: 1.0-py27_0
backports.shutil_get_terminal_size: 1.0.0-py27_1 conda-forge
ipython: 5.1.0-py27_1 conda-forge
Proceed ([y]/n)? y
Extracting packages ...
[ COMPLETE ]|###################################################################################| 100%
Linking packages ...
[ COMPLETE ]|###################################################################################| 100%
mihai<strong i="11">@archimedes</strong>:/tmp > ipython
والآن يعمل !!! شكرا على وقتك السخي takluyver !
هذا هو ناتج البرنامج النصي الخاص بك:
In [2]: run debug_namespace_pkg.py
mod: <module 'backports' from '/home/raid2/mihai/.local/lib/python2.7/site-packages/backports/__init__.pyc'>
backports.__path__ = ['/home/raid2/mihai/.local/lib/python2.7/site-packages/backports', '//nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']
Found /home/raid2/mihai/.local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
Found //nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
حسنًا ، سعيد لأنك عملت. يُظهر الإخراج من البرنامج النصي الآن الأشياء كما يفترض أن تكون ؛ نأمل أن يكون النص مفيدًا إذا واجه شخص ما هذه المشكلة في المستقبل.
ولدي أيضا نفس المشكلة. جربت كل شيء منذ البداية ، وقم بإلغاء تثبيت كل شيء وتثبيته. شغّل أيضًا النص الذي شاركته أعلاه -
ها هو الناتج:
aranyo-139-61:Desktop shiva$ python debug_namespace_pkg.py
mod: <module 'backports' (built-in)>
backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']
Found /usr/local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
Found /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports
No __init__.py found
Found /usr/local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
هل يمكنك مساعدتي في هذا؟ لا أريد استخدام conda بالرغم من ذلك.
شكرا!
هل يوجد أي شيء في /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports
؟ هل يمكنك محاولة إزالته / إعادة تسميته؟
هل يوجد أي شيء في /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports؟ هل يمكنك محاولة إزالته / إعادة تسميته؟
حاولت ، لا تزال نفس المشكلة.
لقد أجريت تغييرًا على البرنامج النصي لتصحيح الأخطاء ، هل يمكنك محاولة الحصول عليه مرة أخرى وإعادة تشغيله.
ها هو الناتج -
mod: <module 'backports' (built-in)>
backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']
-- Found /usr/local/lib/python2.7/site-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
-- Found /usr/local/lib/python2.7/site-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
هل أعدت تشغيل Python منذ إزالة / إعادة تسمية هذا الدليل؟ لا يزال يجدها بطريقة ما.
أقوم بتشغيل البرنامج النصي باستخدام الأمر "python debug_namespace_pkg.py". وقمت بإعادة تشغيل الجهاز قبل القيام بذلك.
و /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports
بالتأكيد غير موجود؟ كما في السابق ، لا أفهم كيف يتم إحضار مرجع إلى مجلد غير موجود على ما يبدو.
نعم ، لقد أعدت تسميته في الموقع الذي حددته. هل أنت متأكد أنك لا تعني /usr/local/lib/python2.7/site-packages/backports
؟
لا ، هذا هو ما تحتاج إلى العثور عليه. يبدو أن الشخص الأقل من /Users/shiva
يعيق طريقه بطريقة ما. يوضح هذا الخط أنه لا يزال يجدها بطريقة ما:
backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']
لكني لا أفهم كيف يكون ذلك ممكنًا بعد إزالته. :خجول:
آها ، هناك شيء لم أعرفه قط: ملفات .pkg
. هل يمكنك البحث عن ملف يسمى backports.pkg
؟
(من المحتمل أن يكون backports.pkg
في أحد هذه الدلائل site-packages
، على الرغم من أنه قد يكون في مكان آخر على نظامك)
لا يمكنني العثور على backports.pkg في أي مكان. لقد استخدمت find ./* -name backports.pkg في المجلد الجذر.
أخيرًا ، نجحت.
إعادة تسمية هذا المجلد لا تعمل ، إزالته تعمل. شكرا جزيلا لمساعدتكم :)
غريب ، لا أفهم سبب اختلاف إزالته عن مجرد إعادة تسميته. سعيد لأنك عملت ، على أي حال.
أواجه مشكلات مماثلة ولا يبدو أن إلغاء تثبيت / تثبيت الأشياء يساعد. هذا هو ناتج نص التصحيح الخاص بك (بسبب python test.py
):
mod: <module 'backports' (built-in)>
backports.__path__ = ['/home/ihincks/.local/lib/python2.7/site-packages/backports']
-- Found /usr/local/lib/python2.7/dist-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
عندي:
$ ls /home/ihincks/.local/lib/python2.7/site-packages/ | grep backports
backports_abc-0.5.dist-info
backports_abc.py
backports_abc.pyc
backports.shutil_get_terminal_size-1.0.0
لقد حصلت عليه في النهاية من خلال طريقة الاختراق التالية. افتح (على لينكس) /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
نفس الشيء مرة أخرى - بطريقة ما يتم العثور على دليل لا يبدو أنه موجود. هل يمكنك البحث عن ملف backport.pkg
أيضًا؟ سأضيف ذلك إلى البرنامج النصي.
الإخراج من أحدث نص برمجي:
mod: <module 'backports' (built-in)>
backports.__path__ = ['/home/ihincks/.local/lib/python2.7/site-packages/backports']
-- Found /usr/local/lib/python2.7/dist-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
هذا مثير للغضب. لا يمكنني معرفة كيفية إيجاد المسار الأول ( /home/ihincks/...
).
هل هناك أي شيء آخر في /home/ihincks/.local/lib/python2.7/site-packages/
قد يفسر سبب العثور على backports
هناك؟
لا أعرف بالضبط ما الذي أبحث عنه. إليك كل شيء بعملة /home/ihincks/.local/lib/python2.7/site-packages/
:
backports_abc-0.5.dist-info
backports_abc.py
backports_abc.pyc
backports.shutil_get_terminal_size-1.0.0
bleach
bleach-1.5.0.dist-info
certifi
certifi-2016.9.26.dist-info
configparser-3.5.0.dist-info
configparser-3.5.0-nspkg.pth
configparser.py
configparser.pyc
entrypoints-0.2.2.dist-info
entrypoints.py
entrypoints.pyc
enum
enum34-1.1.6.dist-info
functools32
functools32-3.2.3.post2.dist-info
html5lib
html5lib-0.9999999.dist-info
ipykernel
ipykernel-4.5.2.dist-info
ipython_genutils
ipython_genutils-0.1.0.dist-info
ipywidgets
ipywidgets-5.2.2.dist-info
jinja2
Jinja2-2.8.dist-info
jsonschema
jsonschema-2.5.1.dist-info
jupyter_client
jupyter_client-4.4.0.dist-info
jupyter_console
jupyter_console-5.0.0.dist-info
jupyter_core
jupyter_core-4.2.1.dist-info
markupsafe
MarkupSafe-0.23.dist-info
mistune-0.7.3.dist-info
mistune.py
mistune.pyc
nbconvert
nbconvert-5.0.0.dist-info
nbformat
nbformat-4.2.0.dist-info
pandocfilters-1.4.1.dist-info
pandocfilters.py
pandocfilters.pyc
pexpect
pexpect-4.2.1.dist-info
pickleshare-0.7.4.dist-info
pickleshare.py
pickleshare.pyc
prompt_toolkit
prompt_toolkit-1.0.9.dist-info
ptyprocess
ptyprocess-0.5.1.dist-info
pyzmq-16.0.2.dist-info
qtconsole
qtconsole-4.2.1.dist-info
simplegeneric-0.8.1.dist-info
simplegeneric.py
simplegeneric.pyc
singledispatch-3.4.0.3.dist-info
singledispatch_helpers.py
singledispatch_helpers.pyc
singledispatch.py
singledispatch.pyc
six-1.10.0.dist-info
six.py
six.pyc
terminado
terminado-0.6.dist-info
testpath
testpath-0.3.dist-info
tornado
tornado-4.4.2.dist-info
traitlets
traitlets-4.3.1.dist-info
wcwidth
wcwidth-0.1.7.dist-info
widgetsnbextension
widgetsnbextension-1.2.6.dist-info
zmq
ما هو backports.shutil_get_terminal_size-1.0.0
وما بداخله؟
إنها حزمة Python ، والتي يبدو أنها تعرض الوظيفة المفردة get_terminal_size
في backports.shutil_get_terminal_size
. يحتوي هذا المجلد على هيكل:
./
├── backports
│ ├── __init__.py
│ └── shutil_get_terminal_size
│ ├── get_terminal_size.py
│ └── __init__.py
├── backports.shutil_get_terminal_size.egg-info
│ ├── dependency_links.txt
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ └── top_level.txt
├── HISTORY.rst
├── LICENSE
├── MANIFEST.in
├── PKG-INFO
├── README.rst
├── setup.cfg
├── setup.py
├── test_shutil_get_terminal_size.py
└── tox.ini
محتويات PKG-INFO
هي:
Metadata-Version: 1.1
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]
License: MIT
Description: backports.shutil_get_terminal_size
==================================
A backport of the `get_terminal_size`_ function from Python 3.3's shutil.
Unlike the original version it is written in pure Python rather than C,
so it might be a tiny bit slower.
.. _get_terminal_size: https://docs.python.org/3/library/shutil.html#shutil.get_terminal_size
Example usage
-------------
>>> from backports.shutil_get_terminal_size import get_terminal_size
>>> get_terminal_size()
terminal_size(columns=105, lines=33)
History
=======
1.0.0 (2014-08-19)
------------------
First release.
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2
آه ، حسنًا ، أظن أنك قمت بفك حزمة sdist هناك يدويًا في مرحلة ما. هل يؤدي حذف هذا الدليل بالكامل ( backports.shutil_get_terminal_size-1.0.0
) إلى إحداث أي فرق؟ أنا أظن أنه مجرد ذرة حمراء.
حسنًا ، تم إرجاع /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py
إلى الشكل الأصلي. Ran ipython
وحصلت على خطأ ImportError: No module named shutil_get_terminal_size
.
ثم نقل المجلد /home/ihincks/.local/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0
إلى /home/ihincks
مؤقتًا. Ran ipython
مرة أخرى ، مع الخطأ نفسه.
حسنًا ، هذا المجلد هو مجرد رنجة حمراء ، وما زلت غير واضح بشأن كيفية العثور على /home/ihincks/.local/lib/python2.7/site-packages/backports
:-(
حسنًا ، أتمنى أن أتمكن من تقديم المزيد من المساعدة ، فأنا نصف فقط أفهم ما يجري ؛ عادةً ما تربكني عناصر تثبيت مسار / مكتبة بايثون.
لا مشكلة ، يبدو أن هذا بعض السحر الأسود المخفي جيدًا.
إذا كان بإمكان أي شخص نسخ هذا على نظام لا يمانع في إعطائي إمكانية الوصول إلى ssh للتجول ومحاولة فهم ما يحدث ، فيرجى الاتصال.
أنا أيضًا لدي نفس المشكلة ....... لقد قمت بتثبيت jupyter مؤخرًا وعندما حاولت فتح ملف دفتر ipython ، تقول أن النواة ميتة بسبب خطأ استيراد لـ backports.shutil_get_terminal_size. أخيرًا ، قمت بحل هذه المشكلة بعد ترقية pip ، وإعادة تثبيت jupyter و backports.shutil-get-terminal-size عدة مرات ........ وأخيراً قمت بتشغيل هذا الأمر: python2 -m ipykernel install --user. هذا أعطى الحياة لنواة بلدي. المرجع: http://askubuntu.com/questions/847263/install-jupyter-for-python-2-7-in-ubuntu-14-04
لذلك واجهت هذه المشكلة ، وعند فحص /usr/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info ، وجدت فقط:
total 28
-rw-r--r--. 1 root root 596 Feb 27 10:42 DESCRIPTION.rst
-rw-r--r--. 1 root root 4 Feb 27 10:42 INSTALLER
-rw-r--r--. 1 root root 1175 Feb 27 10:42 METADATA
-rw-r--r--. 1 root root 701 Feb 27 10:42 metadata.json
-rw-r--r--. 1 root root 1455 Feb 27 10:42 RECORD
-rw-r--r--. 1 root root 10 Feb 27 10:42 top_level.txt
-rw-r--r--. 1 root root 110 Feb 27 10:42 WHEEL
ولا شيء للاستيراد. هذا بعد ترقية النقطة ، إلغاء تثبيت / تثبيت ipython وما إلى ذلك. لذلك يبدو أن النقطة لم تكن تقوم بالفعل بتثبيت الحزمة ، فقط العجلة. لقد قمت بتنزيل ملف .tar.gz ، وقمت بنسخه على دليل العجلة الذي أصلح المشكلة التي واجهتها مع ipython. ليست الطريقة الصحيحة لإصلاح ذلك. أنا أركض في RHEL7 ، لذلك ربما يكون لذلك علاقة به.
الدليل الذي ينتهي بـ .dist-info
هو ملف بيانات وصفية حول الحزمة المثبتة ، ولا يقصد به أن يحتوي على أي شيء يمكن استيراده. يجب أن يكون الرمز في دليل مجاور: /usr/lib/python2.7/site-packages/backports
ربما يمكن أن يساعدك الرمز: pip install --user backports.shutil_get_terminal_size
، فقط قم بتثبيته للمستخدم الحالي إذا كان ipython الخاص بك مناسبًا لجذر أو مستخدمين آخرين.
مرحبا يا شباب،
إذا حاولتم يا رفاق إصلاح هذا بـ
pip install backports.shutil_get_terminal_size
لكنها لم تنجح.
أفضل طريقة هي فحص مسار نظامك
import sys
print sys.path
تحقق من كل مسار إذا كانت هناك حزمة backports قبل المسار الصحيح لنموذج ipython وقم بحذفها مباشرة.
لدي إصدار غريب جدًا من هذا الخطأ:
pde<strong i="6">@damoclid</strong>:~$ 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
pde<strong i="7">@damoclid</strong>:~$ python
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> 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
>>> import sys
>>> print [p for p in sys.path if os.path.exists(p + "/backports")]
['/usr/lib/python2.7/dist-packages']
>>> import backports
>>> backports.__path__
['/usr/local/lib/python2.7/dist-packages/backports']
>>> os.path.exists("/usr/local/lib/python2.7/dist-packages/backports")
False
>>> dir(backports)
['__doc__', '__name__', '__path__']
>>>
pde<strong i="8">@damoclid</strong>:~$ cd /usr/local/bin/
pde<strong i="9">@damoclid</strong>:/usr/local/bin$ cd ..
pde<strong i="10">@damoclid</strong>:/usr/local$ sudo find . -iname \*backports\*
pde<strong i="11">@damoclid</strong>:/usr/local$
لا أستطيع حقاً معرفة سبب عدم عثور Python على نظام التشغيل الأصلي المعبأ backports
/ backports.shutil_get_terminal_size
، أو سبب عثوره على إصدار شبحي backports
in / usr / local / ليب. sys.path
الخاص بي هو:
['', '/usr/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages/ropevim-0.7.0-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/pde/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
pde<strong i="13">@damoclid</strong>:/usr/local$ ls -ld `dpkg -L python-backports-shutil-get-terminal-size `
drwxr-xr-x 26 root root 4096 Mar 7 23:01 /./
drwxr-xr-x 12 root root 4096 Apr 5 2014 /usr/
drwxr-xr-x 201 root root 36864 May 14 22:01 /usr/lib/
drwxr-xr-x 27 root root 20480 Apr 4 15:53 /usr/lib/python2.7/
drwxr-xr-x 296 root root 20480 May 15 18:02 /usr/lib/python2.7/dist-packages/
drwxr-xr-x 3 root root 4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports/
-rw-r--r-- 1 root root 75 Aug 19 2014 /usr/lib/python2.7/dist-packages/backports/__init__.py
drwxr-xr-x 2 root root 4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/
drwxr-xr-x 2 root root 4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/
-rw-r--r-- 1 root root 1 Jul 28 2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/dependency_links.txt
-rw-r--r-- 1 root root 1402 Jul 28 2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/PKG-INFO
-rw-r--r-- 1 root root 10 Jul 28 2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/top_level.txt
-rw-r--r-- 1 root root 2913 Aug 19 2014 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/get_terminal_size.py
-rw-r--r-- 1 root root 338 Aug 19 2014 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/__init__.py
drwxr-xr-x 398 root root 12288 May 14 22:01 /usr/share/
drwxr-xr-x 3114 root root 126976 May 15 18:02 /usr/share/doc/
drwxr-xr-x 2 root root 4096 May 15 17:35 /usr/share/doc/python-backports-shutil-get-terminal-size/
-rw-r--r-- 1 root root 333 Jul 28 2016 /usr/share/doc/python-backports-shutil-get-terminal-size/changelog.Debian.gz
-rw-r--r-- 1 root root 71 Aug 19 2014 /usr/share/doc/python-backports-shutil-get-terminal-size/changelog.gz
-rw-r--r-- 1 root root 1372 Jul 28 2016 /usr/share/doc/python-backports-shutil-get-terminal-size/copyright
سأعيد الفتح ووضع علامة 5.4 أعتقد أنه يجب علينا البائع shutil_get_terminal_size
لنكون بأمان.
Carreau fwiw يبدو أنه قد يكون هناك خطأ في النقطة أو ثعبان هنا ، أو فعلت شيئًا أحمق ، أو ربما كلاهما. سوف يمر بها بعض الأشخاص الأكثر خبرة بنقطة.
حالة أخرى حيث يتم العثور على حزمة backports
ليست موجودة بالفعل. أبلغ عدد قليل من الأشخاص عن شيء من هذا القبيل ، لكن لا يمكنني معرفة مصدره أيضًا. هل يمكنك أن تجرب تشغيل هذا البرنامج النصي ؟ وابحث حولك عن ملفات .pkg
و .pth
، والتي قد تؤثر عليها.
Carreau على نظامي ، تبين أن المشكلة تكمن في وجود الوحدة النمطية configparser
:
pde<strong i="8">@damoclid</strong>:~/aip$ sudo grep backport `locate *.pth`
/usr/local/lib/python2.7/dist-packages/configparser-3.5.0-nspkg.pth:import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('backports',));ie = os.path.exists(os.path.join(p,'__init__.py'));m = not ie and sys.modules.setdefault('backports', types.ModuleType('backports'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
pde<strong i="9">@damoclid</strong>:~/aip$ pip freeze | grep configp
configparser==3.3.0.post2
pde<strong i="10">@damoclid</strong>:~/aip$ cd /usr/local/lib/
pde<strong i="11">@damoclid</strong>:/usr/local/lib$ find . -iname *configp*
./python2.7/dist-packages/configparser-3.5.0.dist-info
./python2.7/dist-packages/future/moves/configparser.py
./python2.7/dist-packages/future/moves/configparser.pyc
./python2.7/dist-packages/configparser.py
./python2.7/dist-packages/configparser-3.5.0-nspkg.pth
./python2.7/dist-packages/configparser.pyc
pde<strong i="12">@damoclid</strong>:/usr/local/lib$ sudo pip uninstall configparser
Not uninstalling configparser at /usr/lib/python2.7/dist-packages, outside environment /usr
pde<strong i="13">@damoclid</strong>:/usr/local/lib$ sudo rm -rf `find . -iname *configp*`
pde<strong i="14">@damoclid</strong>:/usr/local/lib$ ipython
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
Type "copyright", "credits" or "license" for more information.
IPython 5.1.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]:
Do you really want to exit ([y]/n)? y
بفضل erikrose للمساعدة في تصحيح هذا.
سيتم إغلاق هذه الأشياء كبائع # 10587 و IPython 5.4 قريبًا
التعليق الأكثر فائدة
oschow هذا _should_ العمل بشكل عام: