簡體   English   中英

如何允許嵌入式Python解釋器中調用的腳本導入第三方庫?

[英]How to allow 3rd-party libraries to be imported by scripts called in embedded Python interpreter?

我使用Python C API將Python 2.7.2解釋器嵌入到C ++應用程序中。

在目標機器上,我不能保證Python安裝,所以我試圖讓嵌入式解釋器查看我的應用程序所在的文件夾。 所以在應用程序中,我有Python的Lib,Libs和DLLs文件夾。

在代碼中,我使用Py_SetPythonHome()和Py_SetProgramName()來加載Python,並允許安裝標准庫。

我正在使用的測試腳本之一有:

import csv

import numpy

csv線現在很好。 在\\ libs目錄中,我可以看到site-packages \\ numpy。 但是這條線上的進口崩潰了。 我正在使用numpy 1.6.1。

我想我可能需要更改模塊搜索路徑 - 這是正確的,實現這一點的最佳方法是什么,以允許我的腳本可以訪問像numpy這樣的第三方庫? 您可以假設我可以生成numpy目錄的絕對路徑,如果這會有所幫助。

編輯:更多信息 - 我設法生成回溯和我得到的錯誤在\\ numpy \\ core \\ _ init _.py當它嘗試“import multiarray”行時出錯“ImportError:DLL load failed :找不到指定的模塊“。 檢查目錄,我找到一個multiarray.pyd。 有什么想法嗎?

當我使用python C API導入numpy時,我遇到了完全相同的問題。 某些.pyd模塊無法導入。 當我改為boost.python時,沒有問題。 也許你也可以試試boost.python。 是樣本:

結果是DLL不匹配錯誤。 代碼所看到的numpy版本與我的嵌入解釋器的C ++代碼的編譯路徑略有不同。

解決方案是重新編譯numpy對我在我的應用程序中使用的Python發行版,但使用完全相同的編譯器設置。 這清除了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM