我在OSX 10.9上運行python的自制版本:Maverick。OpenNI模塊導入的Python分段錯誤11 - Homebrew boost和python問題?
短版:
我遇到一個Python segmentation fault 11
,當我嘗試導入OpenNI模塊爲蟒蛇。我曾嘗試重新命名我的readline.so
文件,如下面的鏈接提示,所以我假定這是一個不同的問題:
Python crashing when running two commands (Segmentation Fault: 11)
我想知道這可能是我自制的升壓問題安裝不鏈接到Python的正確版本。雖然我似乎無法修復它,但很可能會咆哮錯誤的樹。
很長的版本:
我一直在試圖安裝以下從這個網站方向PyOpenNI Python模塊: http://www.justinfx.com/2012/06/21/getting-started-with-xbox-360-kinect-on-osx/
,而無需手動安裝OpenNI,NITE和Kinect的傳感器我使用的是我在這裏找到的brew版本: https://github.com/totakke/homebrew-openni
一切似乎一直很好,直到我到達最後一步,安裝PyOpenN一世。創建make文件時遇到了CMake錯誤;它沒有找到OpenNI庫和包含目錄。我手動將這些放在CMakeCache.txt文件中,然後安裝似乎正常工作。
一旦我試圖導入openni模塊中的Python Shell中,我得到了:
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6
谷歌搜索這個了一下,有些人認爲這是一個加速的錯誤,已經安裝到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框架目錄,但似乎仍然沒有Homebrew Python框架目錄。
我是在本評估報告提振仍沒有鏈接到蟒蛇的自制軟件版本是否正確?這可能是導致分段錯誤11,還是由其他內容完全導致?
也許它會幫助別人 - 我已閱讀在一些Homebrew問題的評論中,分段錯誤通常意味着錯誤的Python二進制文件。例如,某些東西是針對系統python構建的,但是針對釀造的python運行。 – Tony