Mayavi: يتسبب mlab.axes () في استثناء في 4.5.0 من Mayavi

تم إنشاؤها على ٦ يناير ٢٠١٧  ·  9تعليقات  ·  مصدر: enthought/mayavi

مرحبًا ، لقد قمت مؤخرًا بتحديث Mayavi من 4.4.4 إلى 4.5.0. بعد التحديث ، ألاحظ استثناء عند استخدام الوظيفة axes() mlab axes() . إليك رمز اختبار (يشير التعليق إلى السطر المسبب للخطأ):

from mayavi import mlab
from numpy import pi, sin, cos, mgrid
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
s = mlab.mesh(x, y, z)
mlab.axes(color=(0.9,0.9,0.9))       # LINE CAUSING ERROR
mlab.show()

عند تشغيل الكود أعلاه في بيئة Windows و anaconda ، أرى رسائل الخطأ التالية:

رسالة (مربع) منبثقة:

Exception
In c:\anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\tvtk\tvtk_base.py:569
TypeError: SetInputData argument 1:method requires a vtkDataSet, a vtkPolyDataNormals was provided. (in _wrap_call)

رسالة في نافذة وحدة التحكم:

No handlers could be found for logger "mayavi.core.common"
Exception occurred in traits notification handler.
Please check the log file for details.
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x0000000011AC00A0>, trait: extent, old value: [0 0 0 0 0 0], new value: [-1.53801118  1.53801118 -2.          2.27326963 -1.53801118  1.53801118]
Traceback (most recent call last):
  File "C:\Anaconda\lib\site-packages\traits\trait_notifiers.py", line 340, in __call__
    self.handler( *args )
  File "C:\Anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\mayavi\tools\decorations.py", line 373, in _extent_changed
    axes.module_manager.source.outputs[0].bounds
AttributeError: 'PolyDataNormals' object has no attribute 'bounds'

معلومات اضافية

البيئة التي يحدث فيها الاستثناء أعلاه
نظام التشغيل: Windows 10
تثبيت Python: تم تثبيت Python 2.7 باستخدام Anaconda
حزمة Mayavi: Mayavi 4.5.0 py27_0 menpo
حزمة VTK: vtk 7.0.0 py27_0 menpo
حزمة PyQt: pyqt 5.6.0 py27_1

البيئة التي يعمل فيها الكود أعلاه بشكل جيد
نظام التشغيل: Windows 7
تثبيت Python: تم تثبيت Python 2.7 باستخدام Anaconda
حزمة Mayavi: مايافي 4.4.4 py27_0 menpo
حزمة VTK: vtk 7.0.0 py27_0 menpo
حزمة PyQt: pyqt 4.11.4 py27_5

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

إذا كان لا يزال هناك أي اهتمام ، مع تكوين مماثل لتكوين Jeitan ، فقد واجهت نفس الخطأ للتو وقمت بإسكاته عن طريق تحرير mayavi \ modules \ axes.py ، في update_pipeline ، تغيير:
self.configure_input_data (self.axes، src.outputs [0])
إلى:
self.configure_input_data (self.axes، src.outputs [0] .output)

(النوع السابق هو PolyDataNormals ، والآخر هو PolyData ، المشتق من DataSet.)

ال 9 كومينتر

لما يستحق ، لقد قمت فقط بتكرار هذا الخطأ في ظل الشروط التالية:

نظام التشغيل: Windows 10
تثبيت Python: تم تثبيت Python 2.7 باستخدام Anaconda
حزمة Mayavi: mayavi 4.5.0 py27_0
حزمة VTK: vtk 6.3.0 py27_1
حزمة PyQt: pyqt 4.11.4 py27_4

إذا قمت بإرجاع إصدار أقدم باستخدام conda install mayavi=4.4 * فإن الكود يعمل
مايافي -> 4.4.0
VTK -> 5.10.1

* ملاحظة غير ذات صلة - يؤدي هذا إلى خفض تصنيف Numpy من 1.10 إلى 1.9.3 وهو ما يكسر Spyder ، لذلك يتعين عليك إعادة ترقيته يدويًا

انا لدي نفس المشكلة هنا. لا أحد لديه دليل؟

إذا كان لا يزال هناك أي اهتمام ، مع تكوين مماثل لتكوين Jeitan ، فقد واجهت نفس الخطأ للتو وقمت بإسكاته عن طريق تحرير mayavi \ modules \ axes.py ، في update_pipeline ، تغيير:
self.configure_input_data (self.axes، src.outputs [0])
إلى:
self.configure_input_data (self.axes، src.outputs [0] .output)

(النوع السابق هو PolyDataNormals ، والآخر هو PolyData ، المشتق من DataSet.)

أنا أيضا واجهت المشكلة.

jdonegan اقتراحاتكم أصلحت مشاكلي: +1

كنت أواجه هذه المشكلة أيضًا وكان الإصلاح من jdonegan يعمل جيدًا. كنت بصدد تقديم PR ولكن يبدو أن prabhuramachandran قد دفع بالفعل التزامًا يعمل على إصلاح ذلك ، عن طريق استبدال السطر المعني بدلاً من ذلك بـ:
self.configure_input (self.axes، src.outputs [0])

ربما يجب إغلاق هذه القضية لمنع اللبس؟

وبالمثل ، يجب تطبيق نفس المشكلة والإصلاح المماثل على السطر 373 في decorations.py:
axes.axes.ranges = \
axes.module_manager.source.outputs [0] .output.bounds

لحل الخطأ
"AttributeError: كائن 'PolyDataNormals' ليس له سمة 'حدود'"

لذلك أعتقد أن الالتزام 996fb25 هو جزء ثابت فقط من المشكلة.

كما لاحظ TinghuiWang ، يجب إصلاح هذا في أماكن متعددة. ومع ذلك ، بناءً على مكالمتك المؤامرة (بالنسبة لي كانت plot3d مقابل Points3d) ، قد تحتاج إلى تغييرها مرة أخرى. أصلحته على النحو التالي:

في mayavi\modules\axes.py في السطر 173 ، قمت بالتغيير

self.configure_input_data(self.axes, src.outputs[0])

إلى

data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
self.configure_input_data(self.axes, data)

وبالمثل في \mayavi\tools\decorations.py في السطر 372 أنا خبطت

axes.axes.ranges = axes.module_manager.source.outputs[0].bounds

إلى

src = axes.module_manager.source
data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
axes.axes.ranges = data.bounds

الرجاء إصلاحها يا رفاق. هناك حاجة حقا للمحاور.

يتبع الطريقة المذكورة أعلاه ، لقد حللت فقط جزءًا من المشكلة ، وما زلت أمتلك الاستثناء:
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x11a41ce60>, trait: extent, old value: [0 0 0 0 0 0], new value: [ -2. 17. -2. 17. -4.85316642 6.54683358] NoneType: None

ولا توجد محاور تسمية على الصورة.

يمكن لأي شخص أن يساعد؟ شكرا!

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

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

relyativist picture relyativist  ·  16تعليقات

igamenovoer picture igamenovoer  ·  7تعليقات

GaelVaroquaux picture GaelVaroquaux  ·  13تعليقات

stefanoborini picture stefanoborini  ·  11تعليقات

Kekushke picture Kekushke  ·  9تعليقات