QT調用python的部分問題


環境

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM