環境
qt5.9.0+python3.5.2 (都是32位)
問題
1.導入不了<Python.h>頭文件和libs的問題
可能與下面幾點有關:
- 建議路徑不要帶空格,中文等,最好python直接就安裝在某個盤的根目錄,好找。例如:D:/python35-32/
- qt版本和python版本都一致,以前我用32位qt與64位python。
- python的環境變量一定要添加。
2.import不了文件??
可能如下:
- 引入的python文件,需與生成的exe文件路徑一致,所以需將python放入release文件夾內。放項目內,和項目同文件夾都無法引入python文件。
3.出現
D:\Python35\include/object.h:446:23: error: expected unqualified-id before ';'
token PyType_Slot *slots; /* terminated by slot==0. */
原因:由於QT中定義了slots作為關鍵了,而python3中有使用slot作為變量,所以有沖突。
解決:只是在python的object.h中 slots沖突,因此修改object.h(原文件請備份):
#undef slots //這里添加 typedef struct{ const char* name; int basicsize; int itemsize; unsigned int flags; PyType_Slot *slots; /* terminated by slot==0. */ } PyType_Spec; #define slots Q_SLOTS //這里添加
參考文章
【1】QT與Python混合編程經驗記錄:https://www.cnblogs.com/jiaping/p/6321859.html
【2】win10 + QT5.9.3 調用python程序(.py):https://blog.csdn.net/octdream/article/details/103177627
【3】Qt5(C++)調用python3腳本(帶輸入輸出參數):https://blog.csdn.net/Sun_tian/article/details/104328564?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2