2014-05-11 23 views
0

在我的系統(Mac OS X 10.6.8)中,無法打開Enthought Canopy,因爲它在控制檯中立即崩潰並出現許多錯誤:全球OS X框架與本地衝突,並阻止Canopy打開

11/05/14 20.28.00 [0x0-0x1271270] .com.Canopy [53010] objc [53015]:QCocoaPageLayoutDelegate類在/Users/name/Applications/Canopy.app/appdata/canopy- 1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/PySide /../../../../ lib/QtGui.framework/Versions/4/QtGui和/Library/Frameworks/QtGui.framework/Versions/4/QtGui。將使用兩者之一。哪一個是未定義的。接着

14年11月5日20.28.00 [0x0-0x1271270] .com.Canopy [53010]的QObject :: moveToThread

:當前線程(0x102837760)不是該對象的線程( 0x120281040)。

14年11月5日20.28.00 [0x0-0x1271270] .com.Canopy [53010]無法移動到目標線程(0x102837760)

14年11月5日20.28.00 [0x0-0x1271270]。 com.Canopy [53010]在Mac OS X上,您可能會將兩套Qt二進制文件加載到同一個進程中。檢查所有插件是否針對正確的Qt二進制編譯。導出DYLD_PRINT_LIBRARIES = 1並檢查是否只加載了一組二進制文件。

其實我已經安裝在默認位置版本的Qt(所以我有型/Library/Frameworks/QtGui.framework的很多框架),這似乎與冠有內部版本衝突。有沒有辦法解決這個衝突,而不刪除以前的Qt安裝?

具有諷刺意味的是,我決定安裝Canopy來規避我在安裝chaco時唯一需要的程序,因爲它需要Qt和Pyside。這引發了一場長時間的犛牛刮馬拉松比賽,因爲我希望通過安裝Canopy來安裝一個程序(Qt-> pyQt-> ets-> vtk-> mayavi-> chaco-> pyside - > ...)。因此,我在這一點上非常絕望。

+0

無論打包/構建的Canopy需要一起行動並正確引用捆綁框架。 –

回答

0

考慮到您的操作系統的年齡,您可能還會運行較舊版本的Canopy。 我從他們的網站下載了當前(64位)版本,並撞上了它下面的腳本:

#!/bin/tcsh #-x 

# create a working directory 
if (! -e ~/Canopy) then 
    mkdir ~/Canopy 
endif 

# get a list of all files (and their types) 
if (! -e ~/Canopy/Canopy-files.txt) then 
    find /Volumes/Enthought/Canopy.app/ -type f -exec file {} \; > ~/Canopy/Canopy-files.txt 
endif 

# grep that list for all dylibs 
if (! -e ~/Canopy/Canopy-dylibs.txt) then 
    grep 'dynamically linked shared library' ~/Canopy/Canopy-files.txt > ~/Canopy/Canopy-dylibs.txt 
endif 

# `otool -DL` all dylibs in that list looking for 'QtGui' 
foreach line ("`cat ~/Canopy/Canopy-dylibs.txt`") 
    set file = `echo $line | awk '{split($0,a,":"); print a[1]}'` 
    otool -DL $file | grep 'QtGui' 
end 

所有報道QtGui路徑是:

@rpath/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.5) 

和實際dylib在:

/Volumes/Enthought/Canopy.app//appdata/canopy-1.4.0.1938.macosx-x86_64/Canopy.app/Contents/lib/QtGui.framework/Versions/4/QtGui: 

要檢查您的應用,請將第10行的路徑更改爲您的應用版本的路徑。

如果您發現無效路徑,則可以通過'install_name_tool'進行更改。警告:這個工具默默地失敗;總是檢查一下,看看它是否做到了你期望的結果。

0

如果您的PYTHONPATH環境變量設置爲指向另一個Python安裝,則可能會導致此問題的一個原因。這是PYTHONPATH的一個不正確的用法,它旨在指向尚未安裝到Python中的模塊和包(通常是內部)。它並不打算指出任何Python安裝(甚至沒有運行的安裝,當然也不是一個不同的安裝)。 Enthought正在考慮如何使Canopy更好地抵禦這種類型的錯誤。同時,您需要在啓動Canopy之前取消設置PYTHONPATH。

如果不是這種情況,請報告所有環境變量的值(必要時進行編輯)。您可以通過在終端中鍵入env命令來獲得此信息。