Ipython: تعليق "تشغيل الكل" في دفتر الملاحظات على٪ matplotlib كيو تي

تم إنشاؤها على ١٦ أبريل ٢٠١٤  ·  39تعليقات  ·  مصدر: ipython/ipython

هذا خطأ غريب ، لكنه يبدو قابلاً للتكرار عبر الأنظمة.

إذا كان لدي دفتر ملاحظات حيث توجد الخلية الأولى

%matplotlib qt

وقمت بتحديد "تشغيل الكل" ، ينفذ IPython الخلية الأولى ولكن يتوقف بعد ذلك. رمز الحالة في الزاوية العلوية اليمنى عبارة عن دائرة مفتوحة ، لكن لا يمكنني تشغيل أي خلايا أخرى. إذا أضفت بيان طباعة بسيطًا بعد سطر %matplotlib ، فسيتم تنفيذه وطباعته إلى منطقة الإخراج.

لا يحدث هذا إذا قمت بتنفيذ الخلية "يدويًا". بمجرد حدوث ذلك ، يمكنني تحديد "تشغيل الكل" دون مشاكل.

يحدث هذا مع IPyhton 2.0 على كل من OSX 10.6 و 10.8. أنا أستخدم Python 2.7 ، من خلال الأناكوندا.

يسعدني تجربة أي شيء لتعقب هذا بشكل أكبر ...

bug matplotlib

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

تحدث المشكلة أيضًا مع السحر %gui qt ، على الرغم من أنني أعتقد أنه يحاول استيراد matplotlib في ظل بعض الظروف ، لذلك لست متأكدًا.

ال 39 كومينتر

لاحظت شيئًا مشابهًا مع تثبيت Python 2.7 من miniconda على windows. عندما يكون لدي دفتر ملاحظات حيث تكون الخلية الأولى هي:

%pylab

سيتم تعليق "تشغيل الكل" دائمًا حتى بعد تشغيل هذه الخلية المعينة يدويًا بمفردها. بعد ذلك ، يجب علي Kernel-> إعادة التشغيل من أجل جعل دفتر الملاحظات يستجيب لأي شيء. يتمثل الحل البديل في تشغيل هذه الخلية يدويًا بمفردها ، والانتقال إلى الخلية التالية ثم "تشغيل الكل أدناه".

يسعدني أيضًا تقديم المزيد من المعلومات للمساعدة في تتبع هذا الأمر بشكل أكبر.

يمكنني أيضًا تأكيد هذا (وهو أمر مزعج إلى حد ما إذا كان لديك خلية أولى بها كل من %matplotlib وبعض الواردات (التي تستغرق بعض الوقت للتنفيذ) ، وتريد تنفيذها مع الخلايا التالية).

طريقة بسيطة لإعادة إنتاج هذا:

  1. دفتر ملاحظات به خليتان:

%matplotlib import time time.sleep(10)

print "This will not print"

  1. قم بتنفيذ كلاهما مرة واحدة (اضغط على مفتاح shift-enter مرتين)
  2. سيتم تنفيذ الخلية الأولى ، ولكن بعد ذلك تتوقف النواة (لم يتم تنفيذ الخلية الثانية ، لا يمكنك تنفيذ أي شيء ، على الرغم من أن المؤشر يشير إلى أن النواة جاهزة).

untitled

لذلك لا يتعلق الأمر بالضرورة بـ "تشغيل الكل" ، ولكن فقط بتنفيذ عدة خلايا حيث تحتوي خلية واحدة على %matplotlib .

تم اختباره مؤخرًا باستخدام IPython 2.1 و Windows 64 بت و Firefox 31

بعد إجراء المزيد من التجارب ، وجدت أن هذه المشكلة تظهر لي أولاً في الإصدار 2.0.0. إذا عدت إلى الإصدار 1.2.1 مع

conda install ipython=1.2.1

تزول المشكلة.

Windows 32 بت و python 2.7.7 و Firefox 31

لقد واجهت أيضًا هذا الخطأ ، ويمكنني التكاثر باستخدام الطريقة المذكورة أعلاه باستخدام Python 3.4.1 و Anaconda 2.1.0 (64 بت) على Windows 8 و IPython 2.3.1
إنها حشرة مزعجة للغاية. هل هناك شيء يمكنني القيام به للمساعدة في تعقبه؟ متى يُتوقع الانتهاء من المرحلة 4.0 (تقريبًا)؟

أؤكد الخطأ باستخدام إصدار ipython الأخير من جيثب (e2778c5f4047d03f5f025bd53d1704a0cf9f0337) على Linux Mint 17 و python 3.4 و matplotlib 1.4.0.

أي أخبار عن هؤلاء الرجال؟ يمكنني إجراء المزيد من الاختبارات إذا لزم الأمر. هذا الخطأ مزعج حقا !!!

يمكنني أن أؤكد أن هذا يحدث لي أيضًا ، يحدث طوال الوقت على CentOS w / python 2.7 و matplotlib 1.4.4

هل يعمل إذا قمت بتشغيل الخلية يدويًا؟

انظر تعليقي أعلاه (https://github.com/ipython/ipython/issues/5629#issuecomment-50603511) ، يظهر أيضًا إذا قمت بتشغيل خلايا متعددة يدويًا

نعم - إنها في الأساس مسألة توقيت على ما أعتقد. إذا قمت بتشغيل Shift + Enter ، فقم بتشغيل الخلية ، ثم انتظر ثانية ، ثم تابع مع الآخرين ، ثم تعمل. إذا قمت بالضغط على Shift + Enter عدة مرات بشكل متكرر ، فسيتم تعليقه. لا يؤدي تشغيل المزيد من الخلايا إلى تشغيل أي رمز فعليًا (لا تزال الدائرة الصغيرة في أعلى اليمين فارغة).

^ هذا أيضًا ما لاحظته.

تم التحقق منه في Ipython Notebook 3.1.0. الحل:

import time
%matplotlib
time.sleep(1)

قبيح ، لكنه مزعج للغاية التخلي عن خيار تشغيل كل شيء.

حصلت على هذا للعمل على جهازي أيضًا.

في الجمعة ، 12 حزيران (يونيو) 2015 الساعة 7:02 صباحًا ، كتب quicknir [email protected] :

تم التحقق منه في Ipython Notebook 3.1.0. الحل:

وقت الاستيراد
٪ matplotlib
time.sleep (1) الوقت

قبيح ، لكنه مزعج للغاية التخلي عن خيار تشغيل كل شيء.

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/ipython/ipython/issues/5629#issuecomment -111502934.

هل يمكن أن نحصل على هذا Milestoned لـ 4.1 (أو 5.0)؟
تبدو دفاتر الملاحظات المعلقة (بالنسبة لي) أكثر حدة قليلاً من مناسبة لمرحلة مهمة في قائمة الرغبات. أيضًا ، هذا الخطأ مزعج عند استخدام matplotlib (على الرغم من الحل البديل).

هل يجب أن يكون لدينا sleep(1) في سحر matplotlib نفسه كحل بديل حتى نكتشف لماذا ؟؟

: +1:

نادرا ما يعمل حل النوم بالنسبة لي. لقد رأيت أنه يعمل عدة مرات ، لكن الغالبية العظمى من المرات التي جربتها ، لا يزال دفتر الملاحظات معلقًا.

الحل الوحيد الذي يناسبني باستمرار هو:

  1. قم بتشغيل الخلية التي تحتوي على٪ matplotlib يدويًا
  2. انتظر إشارة الخمول kernel
  3. حدد الخلية التالية
  4. "تشغيل الكل أدناه"

حاولت FWIW اختبار هذا قليلاً للحصول على تقدير أكثر منطقية لمدى نجاح ذلك.

لقد صنعت دفتر ملاحظات بالخلايا الثلاث التالية:

import time
%matplotlib qt
time.sleep(1)
with open("test_log.txt", "a") as fid:
    fid.write("it worked\n")

ثم ركض في القذيفة:

for i in {1..100}; do
    ipython nbconvert --execute test_qt.ipynb  --inplace;
done
wc -l test_log.txt

ربما لا يستخدم هذا الاختبار الكود الصحيح ، لكن يبدو أنه يعمل بشكل جيد.

تم وضع علامة 4.1 لذلك فنحن ننظر إليه.

شكرا لك.
لقد جربت للتو تعديل mwaskom ، وحصلت على نفس النتائج. ومع ذلك ، قمت بعد ذلك بنزع كود الوقت والنوم ، وقمت بتشغيل جزء الصدفة مرة أخرى ، وقد نجح الأمر أيضًا! لذلك ، لا يبدو أن هذا إجراء إعادة جيد (أو حل داخلي). : - /
لقد وجدت أيضًا ، مثل tanderl ، أن حل النوم لا يعمل دائمًا معي. هذا موجود على ipython 3.2.1 على Ubuntu 64bit. يمكنني تجربة نفس الشيء على Windows غدًا.

في Windows 8.1 ، باستخدام Ipython 3.2.0 المثبت عبر Anaconda ، وجدت أيضًا أن حل النوم لا يعمل بالنسبة لي ، أي مع sleep(1) (أو حتى قيم أكبر) في نفس الخلية مثل matplotlib magic ، تشغيل سيظل كل شيء على النواة المعاد تشغيلها حديثًا معطلاً (أو لا تفعل شيئًا ، لا تزال واجهة المستخدم تعمل) ، مع وجود نجمة في الخلية التالية. تشغيل الخلايا يدويًا واحدًا تلو الآخر ، مع الانتظار بينهما ، لا يزال يعمل.

أؤكد ما قاله bilderbuchi مع مكدسات أناكوندا محدثة على Linux Mint.

أهلا،
لقد واجهت للتو مشكلة مماثلة. عند تشغيل دفاتر الملاحظات التي تستخدم٪ matplotlib مضمنة أو سحرية دفتر ملاحظات ، يتوقف "تشغيل كل الخلايا" أحيانًا ويجب أن أقوم بتشغيل كل الخلايا يدويًا.
أنا أقوم بتشغيل windows 7 و Python 3.5 و IPython 5.1.0 وebook 4.1.0 و matplotlib 1.5.3.
كحل بديل ، أقوم بتنظيف جميع المخرجات ومن ثم يبدو أنها تعمل. لا يمكنني توفير دفتر ملاحظات قابل للاستنساخ ، للأسف (سأفعل ذلك إذا مررت عبر هذا في المستقبل).

مع أطيب التحيات،
فلوريان

هذا لا يزال في القضية ، في كل من دفتر Jupyter والمختبر.

thomasaarholt هل لديك إجراء تكاثر موثوق؟

bilderbuchi انظر

bug

Carreau ، هل هذا

bilderbuchiCarreau ، لقد رصدت للتو علامة قائمة الرغبات .
أود أن أوضح أن هذا الخطأ يجب أن يكون ذا أولوية أعلى بكثير:

سيتعلم العديد من مستخدمي jupyter الجدد استخدام jupyter بواسطة أجهزة الكمبيوتر المحمولة الموجودة مسبقًا. على سبيل المثال ، يحاولون تشغيل مثال مصنف تم توفيره بواسطة بعض المكونات الإضافية. في ظل السلوك الحالي ، سيجد المستخدمون الذين يستخدمون الأمر Run All أو "Shift + Enter" بسرعة من خلال دفتر الملاحظات أن الكمبيوتر الدفتري معلق منذ اللحظة الأولى ، وهذا يعطي انطباعًا أوليًا سيئًا للغاية. يمكن لمثل هذا الانطباع في كثير من الأحيان أن يؤكد حقًا على مدى "تعقيد البرمجة" بالنسبة لشخص يتعلم الترميز لأول مرة ، أو لشخص كان لديه تجربة سيئة (الفصل / الاختبار) في الماضي.

أود أن أوضح أن هذا الخطأ يجب أن يكون ذا أولوية أعلى بكثير:

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

Carreau هل يمكنك أن تدلني على المكان الذي يجب أن يحدث فيه التكامل بين خادم kernel وواجهة المستخدم الرسومية في كود ipython؟

هل هناك طريقة لفتح دفتر ملاحظات برمجيًا في مستعرض وتشغيل جميع الخلايا؟ من المحتمل أن يمكّننا ذلك من تقسيم الشفرة إلى قسمين لتحديد التغيير الذي يسبب ذلك.
لقد حاولت تنفيذ دفتر الملاحظات المخالف عبر nbconvert --execute من المحطة ومن داخل جلسة IPython ، لكن لم أتمكن من تعليقه حتى الآن.

bilderbuchi أولاً ، هل أنت قادر على إعادة إنتاج الخطأ "يدويًا" على جهازك؟

نعم. لقد وجدت بعض السلوك المثير للاهتمام بتجربة أشكال مختلفة من السحر
محتويات الخلية الأولى:

%matplotlib notebook -> works
%matplotlib inline -> works
%matplotlib -> prints Using matplotlib backend: Qt5Agg, then hangs
%matplotlib qt -> prints ModuleNotFoundError: No module named 'PyQt4' (I think that's a different unrelated bug)
%matplotlib qt5 -> prints nothing, then hangs

(الخطأ المختلف عند تنفيذ %matplotlib qt هو ContinuumIO / anaconda-issues # 1068 على ما أعتقد.)
الخلية الثانية لديها فقط

print("This will not print")

إذا قلت "تعليق" أعلاه ، فأنا أعني أن الخلية الثانية تحتوي دائمًا على نجمة في الرقم بدلاً من "2" ، ولن تتم طباعة الرسالة مطلقًا.
تم تنفيذ كل هذا باستخدام Kernel - Restart & Run All لضمان وجود قائمة نظيفة. هذا موجود على Python 3.6.1 عبر Anaconda على Windows 10 و IPython 5.3.0 و Firefox 52.0.2.

هل يمكنك توجيهي إلى المكان الذي يجب أن يحدث فيه التكامل بين خادم kernel وواجهة المستخدم الرسومية في كود ipython؟

يوجد وصف لكيفية عمل تكامل حلقة الحدث هنا: http://ipython.readthedocs.io/en/stable/config/eventloops.html#event -loops-in-the-kernel

ويبدأ رمز حلقة حدث Qt 5 هنا: https://github.com/ipython/ipykernel/blob/20426cdad71820642dc69b95c30565d155521509/ipykernel/eventloops.py#L89

فقط للتحقق - هل المشكلة بالتأكيد في جزء "matplotlib" من %matplotlib وليس مع السحر بشكل عام؟ فقط في حالة استغراق السحر الآخر وقتًا أقل للتشغيل ، وبالتالي يكون الخطأ أقل وضوحًا.

تحدث المشكلة أيضًا مع السحر %gui qt ، على الرغم من أنني أعتقد أنه يحاول استيراد matplotlib في ظل بعض الظروف ، لذلك لست متأكدًا.

هذا لا علاقة له (بشكل مباشر) بـ matplotlib أو السحر. يكاد يكون من المؤكد أنها حالة سباق عند تنفيذ توزيع الورق من حلقة حدث تدير العرض إلى الأخرى.

أعتقد أن الإصلاح المماثل لـ https://github.com/ipython/ipython/pull/10301/files هو المطلوب هنا.

لقد واجهت مشكلة مماثلة بعد تحديث Spyder

أستطيع أن أؤكد أن هذا ما زال يحدث مع٪ gui qt. لدي مجموعة من عناصر Qt التي اتصل بها من دفاتر الملاحظات وفي تلك الدفاتر ، يجب أن أقوم بتشغيل خليتي الأولى يدويًا ، وانتظر حتى تكتمل ، ثم تشغيل الكل أدناه.

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