Установка MayaVi на Qt4 приводит к ошибкам сегментации - PullRequest
1 голос
/ 11 октября 2011

Я пытаюсь установить MayaVi на свой компьютер.Я на MacBook Air с OS X 10.6.8, 4 ГБ ОЗУ.

Мой питон и большая часть моего стека построены с помощью Homebrew или pip.В частности, это верно для python2.7, ipython, Qt4, numpy, scipy, vtk и т. Д. VTK был установлен с флагами --python и --qt-extern в Homebrew, и все сборки были в порядке.У меня не установлен wxPython, так как мне не удалось заставить его работать через pip, ручную сборку или двоичные файлы.

Если я запускаю ipython -q4thread, я не могу успешно выполнить from mayavi import mlab, так как получаю ошибку, связанную сиспользование двух разных API для PyQt: http://groups.google.com/group/spyderlib/browse_thread/thread/36a35baec74ca144

Однако, если я запускаю только ipython, я могу успешно запустить from mayavi import mlab.Затем я пытаюсь следовать этому примеру: http://github.enthought.com/mayavi/mayavi/example_using_with_scipy.html,, который включает в себя следующие команды:

import numpy as np

def V(x, y, z):
    """ A 3D sinusoidal lattice with a parabolic confinement. """
    return np.cos(10*x) + np.cos(10*y) + np.cos(10*z) + 2*(x**2 + y**2 + z**2)

X, Y, Z = np.mgrid[-2:2:100j, -2:2:100j, -2:2:100j]

from mayavi import mlab
mlab.contour3d(X, Y, Z, V)

Все это прекрасно работает, и я получаю всплывающее окно, и я могу вращать трехмерный график и т. Д.Однако затем я нажимаю на значок, чтобы открыть конвейер, который открывает другое окно.Затем в руководстве говорится, что нужно дважды щелкнуть мышью на «изоповерхности», чтобы изменить ее свойства.Как только я это делаю, я получаю воспроизводимую ошибку сегментации.

Я понятия не имею, как начать выяснять, в чем проблема.

В качестве альтернативы, я могу запустить MayaVi из командыстрока: mayavi2, и GUI появляется.Когда я это делаю, я получаю следующий вывод:

Warning: Unable to import the wx backend for pyface due to traceback: Traceback (most recent call last):
      File "/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/pyface/toolkit.py", line 45, in _init_toolkit
        be = import_toolkit(tk)
      File "/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/pyface/toolkit.py", line 31, in import_toolkit
        __import__(be + 'init')
      File "/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/pyface/ui/wx/init.py", line 14, in <module>
        import wx
    ImportError: No module named wx

Несмотря на то, что GUI появляется, если я пытаюсь выполнить какую-либо операцию, я получаю ошибку segfault.

Пожалуйста, дайте мне знать, еслиу вас есть какие-либо мысли по устранению неполадок или, возможно, руководство по успешной переустановке пакета.

Спасибо!

Uri

1 Ответ

1 голос
/ 09 сентября 2012

У меня также есть MacBook Air с OS X 10.7.4 (Lion).В феврале я потратил много времени на то, чтобы заставить майави работать, и в итоге я смог подготовить научные сюжеты.Это по-прежнему означает, что некоторые примеры и тесты не будут работать правильно, а графический интерфейс выдает множество сообщений об ошибках в консоли, но не вылетает (большую часть времени).Теперь мне удалось прервать установку Python (возможно, путем обновления numpy), поэтому мне нужно было переустановить.Увы, через 6 месяцев не стало легче!

По-прежнему нет жизнеспособной предварительно скомпилированной опции.Я попробовал Enthought Python Distribution отсюда: http://www.enthought.com/repo/.epd_academic_installers. До сих пор нет 64-битной версии с ETS для Mac, компоненты старые, майави, основанные на wxPython, выглядят уродливо, медлительны и не реагируют.Итак, вернемся к brew и pip.После многих проб и ошибок вот что сработало более или менее:

1.Предварительные условия

Скрыть / удалить поврежденную установку Homebrew Python:

mv /usr/local/lib/python2.7/site-packages /usr/local/lib/python2.7/site-packages-old 
mv /usr/local/share/python /usr/local/share/python-old
brew uninstall python pyqt pyside vtk

В Xcode (4.4.1) выберите llvm-gcc в качестве компилятора (у меня был меньше успех с clang):

cd /usr/bin
sudo rm cc c++
sudo ln -s gcc cc
sudo ln -s g++ c++

2.Установка

2.1 Python

brew install python --framework --universal

Укажите новую установку:

cd /System/Library/Frameworks/Python.framework/Versions
rm Current
ln -s /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/Current .

Если установлен EPD, то же самое нужно сделать в /Library/Frameworks/Python.framework/Versions,в противном случае EPD будет иметь приоритет.

2.2 Numpy

Установить numpy из источника (pip 1.2 в настоящее время не устанавливает npymath.ini правильно, что не позволяет scipy создать):

git clone https://github.com/numpy/numpy.git
cd numpy
git checkout v1.6.2
python setup.py install

Поскольку многие пакеты ссылаются на numpy, я действительно рекомендую проверить официальный выпуск 1.6.2 на сегодняшний день.Затем сделайте видимыми пустые заголовки:

cd /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7
ln -s /usr/local/lib/python2.7/site-packages/numpy/core/include/numpy .

2,3 qt, pyqt, vtk

Установите qt (4.8.2) и pyqt (4.9.4):

brew install qt
brew install pyqt

Можно также установить pyside (1.1.1)

brew install pyside

, но этот , по-видимому, вызывает больше сбоев с mayavi.В любом случае добавьте

export QT_API=pyqt

к .bashrc, чтобы избежать путаницы.Далее установите vtk (5.10.0; 5.8.0 работает так же)

brew install vtk --python --tcl --examples --qt

... и подождите (компиляция занимает около 40 минут).Флаг --qt не является строго необходимым, но он также не причиняет вреда.

Затем загрузите данные vtk из http://www.vtk.org/files/release/5.10/vtkdata-5.10.0.tar.gz,, распакуйте их куда-нибудь и укажите переменную среды VTK_DATA_ROOT в каталоге VTKData.Запустите несколько примеров в

/usr/local/share/vtk/Examples

Запустите примеры Python с python <example>.py и TCL с vtk <example.tcl>.Работает абсолютно красиво, верно?Итак, давайте посмотрим, как Mayavi испортит все это в следующем ...

2.4 ETS и mayavi

Хотя

pip install mayavi

куда-то вас заводит, похоже, что оно вызывает больше сбоев, чемустановка кровоточащей кромки из github.Получите https://github.com/enthought/ets/raw/master/ets.py и запустите

python ets.py clone

, чтобы клонировать GIT-репозиторий ETS.Вам нужны только apptools, mayavi, pyface, traits и traitsui, возможно envisage, если вы хотите запустить mayavi2 из командной строки.Поэтому удалите другие каталоги и выполните

python ets.py develop

. Это позволит вам запустить некоторые примеры из репозитория в mayavi/examples/tvtk и mayavi/examples/mayavi, запустив python <example>.py и поиграться с GUI.Существует множество ошибок консоли и множество функций графического интерфейса, которые не работают, например, выбор таблицы LUT.Но, надеюсь, это не даст сбой.

2.5 scipy, matplotlib, ipython

Я предпочитаю получить кровоточащий край от github для scipy и matplotlib.Сначала установите все зависимости, используя brew.Затем

git clone https://github.com/scipy/scipy.git
cd scipy
python setup.py install

git clone https://github.com/matplotlib/matplotlib.git
cd matplotlib
python setup.py install

Затем установите ipython (0.13), используя pip.Для установки qtconsole сначала:

pip install pygments
pip install pyzmq

, затем

pip install ipython

Существует несколько возможных способов запуска ipython для использования с mayavi, в зависимости от того, кто контролирует цикл событий QT:

  • ipython без mlab.show(): зависает.
  • ipython с mlab.show(): работает, но подсказка может перестать отвечать.
  • ipython --gui=qt или ipython --pylab=qt: работает, но диалоговое окно «Сохранить» закрывается немедленно.
  • ipython qtconsole без mlab.show(): зависает.
  • ipython qtconsole с mlab.show(): работает.
  • ipython qtconsole --gui=qt или ipython qtconsole --pylab=qt: Работает.

Удачи!

...