2013-06-12 30 views
0

shapely庫試圖通過使用ctypes.util.find_library('c')查找libc來加載函數。Enthought Canopy:cytpes.util.find_library找不到libc

在使用蘋果公司提供的系統Python中的 「正常」 的Python環境,這個工程:

$ python -c 'from ctypes.util import find_library; print find_library("c")' 
/usr/lib/libc.dylib 

但雨棚的virtualenv裏面,它失敗:

$ . /Users/tim/Library/Enthought/Canopy_64bit/User/bin/activate 
(Canopy 64bit)$ python -c 'from ctypes.util import find_library; print find_library("c")' 
None 

爲什麼?我如何完成這項工作?

回答

0

這似乎從這個邏輯發生於ctypes.macholib.dyld.dyld_default_search:https://gist.github.com/tdsmith/5768065

  • 框架是沒有兩個蟒
  • fallback_library_path是[]系統Python和['/Users/tim/Library/Enthought/Canopy_64bit/User/lib', '/Users/tim/Library/Enthought/Canopy_64bit/System/lib', '/Applications/Canopy.app/appdata/canopy-1.0.0.1160.macosx-x86_64/Canopy.app/Contents/lib']爲Enthought
  • 因爲fallback_library_path在Canopy中定義,DEFAULT_LIBRARY_FALLBACK(['/Users/tim/lib', '/usr/local/lib', '/lib', '/usr/lib'])未檢查。

設置DYLD_FALLBACK_LIBRARY_PATH使這項工作:

(Canopy 64bit)$ DYLD_FALLBACK_LIBRARY_PATH=/usr/lib python -c 'from ctypes.util import find_library; print find_library("c")' 
/usr/lib/libc.dylib 

我覺得這是別人的錯誤 - 也許ctypes的。 (不應該回退路徑只是一個後備?)

1

蒂姆,這是冠層中的一個已知的錯誤,將在1.0.3固定下週將發佈。

+0

確認這是在Canopy 1.0.3中修復的;您需要重新啓動兩次才能使修復生效。 –