2014-01-10 2 views
2

Я запускаю домашнюю версию python на OSX 10.9: Maverick.Ошибка сегментации Python 11 при импорте модуля OpenNI - проблемы с форсированием Homebrew и python?

Короткая версия:

Я испытываю Python segmentation fault 11, когда я пытаюсь импортировать OpenNI модуль в Python. Я попытался переименовать мой readline.so файл, как предложено в ссылке ниже, поэтому я предполагаю, что это другая проблема:

Python crashing when running two commands (Segmentation Fault: 11)

мне интересно, если это может быть проблема с моей доморощенной импульс установки не ссылки на правильная версия python. Хотя я, кажется, не могу это исправить, и очень хорошо может лаять неправильное дерево.

Очень длинная версия:

Я пытался установить модуль PyOpenNI питона следующие направления с этого сайта: http://www.justinfx.com/2012/06/21/getting-started-with-xbox-360-kinect-on-osx/

Вместо того, чтобы вручную устанавливать OpenNI, Nite и датчик Kinect как указано на этой ссылке, я использовал варианты сваривания, которые я нашел здесь: https://github.com/totakke/homebrew-openni

Все, кажется, сработало нормально, пока я не достиг последнего шага, установив PyOpenN Я. При создании файла make я столкнулся с ошибкой CMake; он не нашел библиотеку OpenNI и включил каталоги. Я вручную помещал их в файл CMakeCache.txt, и установка, похоже, работала нормально после этого.

После того, как я пытался импортировать OpenNI модуль в оболочке Python, я получил:

Fatal Python error: PyThreadState_Get: no current thread 
Abort trap: 6 

погуглить это немного, некоторые люди предполагают, что это была ошибка Boost, установив на Mac билд Python вместо версии Homebrew. Homebrew + Python on mac os x 10.8: Fatal Python error: PyThreadState_Get: no current thread importing mapnik

Запуск otool -L $(brew list boost | grep 'python.*.dylib') выход предложил это был случай:

Линия интереса:

/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.5) 

Полный выход:

/usr/local/Cellar/boost/1.55.0/lib/libboost_python-mt.dylib: 
/usr/local/lib/libboost_python-mt.dylib (compatibility version 0.0.0, current version 0.0.0) 
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.5) 
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 
/usr/local/Cellar/boost/1.55.0/lib/libboost_python.dylib: 
/usr/local/lib/libboost_python.dylib (compatibility version 0.0.0, current version 0.0.0) 
/System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.5) 
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 

Я удалил подталкивание и переустановить его с brew install boost --build-from-source

Смешная вещь, после установки, он дал это предупреждение:

The Boost bottle's module will not import into a Homebrew-installed Python. 
If you use the Boost Python module then please: 
    brew install boost --build-from-source 

, который, очевидно, смешно, так как я только что сделал это.Запуск otool снова:

Линия интереса:

/usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0) 

Полный выход:

/usr/local/Cellar/boost/1.55.0/lib/libboost_python-mt.dylib: 
/usr/local/lib/libboost_python-mt.dylib (compatibility version 0.0.0, current version 0.0.0) 
/usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0) 
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 
/usr/local/Cellar/boost/1.55.0/lib/libboost_python.dylib: 
/usr/local/lib/libboost_python.dylib (compatibility version 0.0.0, current version 0.0.0) 
/usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0) 
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 

Так что теперь, кажется, указывает на другой каталог рамочным питон, но кажется, что это еще не Домашняя директория python для начинающих.

Я исправлю в этой оценке, что повышение по-прежнему не связано с домашней версией python? Может ли это вызвать ошибку сегментации 11, или это вызвано чем-то другим?

+0

Возможно, это поможет кому-то - я прочитал в некоторых комментариях к выпуску Homebrew, что ошибка сегментации обычно означает неправильный двоичный код Python. Например, что-то было создано против системного python, но оно запускается против пивоваренного питона. – Tony

ответ

0

Я знаю, что ответ задерживается, но это может быть полезно кому-то, как это было для меня. По-видимому, решение этого было опубликовано akakcolin как ответ на один из вопросов, связанных с PyOpenNI на Github.

  1. Rebuild доморощенного Python:

    brew update затем brew doctor

    brew rm python

    brew install python --force --install-lib --install-headers --install-data --verbose

  2. Symlink:

    ln -s /usr/local/Cellar/python/2.7.x/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib /usr/local/lib/ (обратите внимание на версию питона вы используете)

  3. CMake и сделать:

    cmake ../PyOpenNI вы могли бы указать -D OPENNI_INCLUDE_DIR

    make

Это работало для меня Python 2.7.10 и boost (с boost-python) 1.58.0

Смежные вопросы