問題:使用C++嵌入Python時會引發奇怪的異常。使用C++嵌入Python
計劃:
bool embedd::execute_python(std::string location)
{
if (std::ifstream(location))
{
const char* file_location = location.c_str();
FILE* file_pointer;
// Initialize the Python interpreter
Py_Initialize();
file_pointer = _Py_fopen(file_location, "r");
// Run the Python file
PyRun_SimpleFile(file_pointer, file_location);
// Finalize the Python interpreter
Py_Finalize();
return true;
}
return false;
}
什麼上面的代碼片斷應該做的:功能應先檢查傳入的參數是否是Python文件的有效位置。如果文件存在,那麼它應該執行Python文件。
我的預期結果是:是和否。
什麼錯誤:
測試文件1:
print("Hello world")
結果:成功執行,並得到適當的輸出
測試文件2:
from tkinter import *
root = Tk()
root.mainloop()
Result : Exception root = Tk() File "C:\Users\User\AppData\Local\Programs\Python\Python35-32\Lib\tkinter__init__.py", line 1863, in init baseName = os.path.basename(sys.argv[0]) AttributeError: module 'sys' has no attribute 'argv'
測試過一些其他文件,發現當我們導入像tkinter,uuid,os等模塊(任何)時,會引發類似的異常。在簡要挖這個我IDE的過程監控告訴「符號文件未加載」,例如加載tk86t.dll
Python版本沒有符號文件:這一點我已經提到3.5.2
鏈接: SO - 1發現的bug已經在Python 2.3這裏BUGS
謝謝你的幫助!非常感激! –