2017-03-23 46 views
0

我有一個很大的C++模塊,它使用Boost.Python與Python 3綁定,我編譯成使用CMake上的macOS的.so文件。用Boost.Python創建的Python模塊將不會被導入

當我嘗試導入它在REPL,一切似乎都很好地工作:但是當我運行import聲明

>>>import myModule 
>>> 

,Python中的著名火箭圖標中顯示出來碼頭和停留在那裏幾分鐘後停止。很顯然,我無法訪問我的模塊中定義的任何函數,因此導入看起來很好,但實際上並沒有做任何事情。

我試着看在控制檯,看到,只要我import myModule,我得到兩個launchservicesd[83]: SecTaskLoadEntitlements failed error=22。 它把我帶到thisthat有關的問題,但我找不到確切的問題是什麼。

C++模塊非常龐大,所以我不能查看代碼並找到問題,因此我要求提供有關至少如何調試該問題的任何提示。

+0

「myModule.so」是否有這樣的依賴關係,如果是這樣,它們是否在os/shell路徑上用於這些?模塊本身由PYTHONPATH找到,但共享庫依賴關係不是。 –

+0

謝謝你的回答! 「myModule.so」具有「so」依賴關係,但這些都是非常標準的(可以在[there](http://pastebin.com/1fNEDmbv)找到'otool -L myModule.so'的結果)。我嘗試將所有這些路徑添加到我的PYTHONPATH中,但它不會改變任何內容。 – filaton

+0

很難說正在發生的事情。嘗試評論一切(在BOOST_PYTHON_MODULE(myModule)內),然後編譯並運行。做它運行?如果是,請嘗試取消註釋某些塊,直到找到問題。 –

回答

0

我可以建議以下步驟:

  • 試圖導入模塊,雖然當地的Python會話。因此,運行交互式Python解釋器和'import myModule'。

如果壞了,嘗試檢查:

  • 是Python版本,與myMoudle與聯繫,類同二手解釋
  • 檢查建立architectires是相同的
  • 檢查你甚至可以加載簡單的boost.python示例模塊

如果可以,請檢查您是否在Python中正確設置了模塊搜索路徑碼。