2011-04-03 74 views
0

最後(!)我編譯了Boost :: Python並獲得了我的XCode項目來導入本地模塊。該模塊與線from xml.dom import minidom啓動,但在執行時,我給出的這個錯誤:嵌入式Python加載模塊,但不加載該模塊的內部導入語句

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "FeedStore.py", line 1, in <module> 
    from xml.dom import minidom 
ImportError: No module named xml.dom 

但是,我知道,我已經安裝了XML Python模塊 - 當我從命令提示符打開的Python並輸入from xml.dom import minidom,一切都很順利。而且,當我導入模塊時,它的行爲與我所期望的相同。

我懷疑sys.path有問題,所以我比較了從提示符到在嵌入式模塊中使用的提示符。唯一的區別是嵌入式sys.path不包含''。我試着追加它,但這並沒有改變行爲。

我還懷疑嵌入式版本正在訪問不同於我在提示中使用的Python版本,但sys.prefix在兩次執行之間匹配。

下面是導入我的模塊並運行它的代碼。它現在相當簡單(甚至沒有引用計數),因爲在這一點上,我只想確保能夠嵌入我的模塊(我是一個全新的C++程序員)。

Py_Initialize(); 

    //PyRun_SimpleString("import sys"); 
    //PyRun_SimpleString("sys.path.append('')"); //tried this to no avail! 

    PySys_SetPath("/Users/timoooo/Documents/Code/TestEmbed/"); //this allows me to import my local module 


    PyRun_SimpleString("import FeedStore as fs"); //here's where it whines about the lack of xml.dom 
    PyRun_SimpleString("store = fs.feedStore()"); 
    PyRun_SimpleString("print store.next()"); 

    Py_Finalize(); 

我可能會誤解一些關於boost :: python的必要內容。誰能幫我嗎?

回答

1

儘管具有相同的系統路徑值,請撥打 PyRun_SimpleString("sys.path.append(\"<<path>>\")"); 我需要的地方解決了問題。