2013-01-22 59 views
7

我想在我的應用程序中嵌入Python和已經卡住了相當早。Python嵌入錯誤導入不支持

我的python嵌入到我的C++應用程序和使用本教程中的代碼: http://docs.python.org/2/extending/embedding.html#pure-embedding

我的應用程序完全一致,併成功編譯沒有錯誤。然而上運行的應用pModule = PyImport_Import(pName);線路出現故障返回0,這意味着我得到錯誤輸出的

Failed to load "C:\Users\workspace\dpllib\pyscript.py" 
ImportError: Import by filename is not supported. 

應用PyErr_Print()被調用與命令C:\Users\workspace\ndnlib\pyscript.py multiply 50 150

+0

你嘗試雙反斜線? \\ – imreal

+0

試過了,同樣的錯誤。 – ceorron

+0

您在python腳本中使用哪些導入? – imreal

回答

7

我不能肯定,但我m認爲由於pName設置爲argv [1],並且您正在使用完整路徑來調用腳本,則argv [1]是完整路徑。這意味着代碼將嘗試導入「C:\用戶\工作區\ dpllib \ pyscript.py」,這Python不能(它只能導入「pyscript」)。

嘗試通過從目錄中只輸入「pyscript.py」運行腳本,看看錯誤更改爲「無法加載‘pyscript.py’」。如果是這樣,那麼你必須修復它,所以它不只是導入argv [1]並修改字符串以獲取模塊名稱而不是文件名。

+1

是的,我只是在輸入文件時得到了這個文件,這個文件必須是exe文件的本地文件。同樣,目錄甚至不在一個子文件夾中!不得有.py擴展名。無論如何感謝 – ceorron

+0

編輯子目錄是允許的,但只需加載「pyscript」,併爲您完成搜索。 – ceorron

+0

在Ubuntu上試圖直接運行它導致了一個權限錯誤,修正爲「chmod + x pyscript.py」。然而,在那一點上,我們堅持「ImportError:No module named pyscript」 –

0

如果您創建文件作爲一個模塊,這是simplier。

例如,

創建此:

<project>/MyModule/__init__.py

然後運行文件<project>/script.py

dyn_module_name = (... get module name 'MyModule' from console arguments ...) 
my_dynamic_module = __import__(dyn_module_name) 

因爲這將是一個模塊,而你的scripy.py將加載執行