Qt中用C++呼叫Python檔案的三種方法
感謝:https://www.cnblogs.com/xia-weiwen/p/7932379.html
http://www.jb51.net/article/91611.htm
https://blog.csdn.net/flyfrommath/article/details/52999100
環境:ubuntu Linux 16.04
Qt creator community 5.5.1
python3.5
1.外部工具法
a. 開啟Qt creator,在上方的選單欄中找到:工具——選項,點選進入。
b. 選擇:環境——新增目錄,目錄名字可以自己取,這裡我選擇RunPy2作為目錄名。回車確定。
c. 新增工具:工具名稱亦可自取,這裡我選擇Python3.5.
d. 配置外部工具:
說明:可以隨意書寫;
執行檔:即完成執行python檔案的外部工具,這裡由於我安裝了PyCharm,就直接選擇Pycharm中的python編譯器為外部工具,可以直接在PyCharm中安裝第三方庫,比較方便。當然可以用Linux自帶的Python直譯器:/usr/bin/python3.5.但是安裝第三方庫就比較麻煩。這裡可以參考:http://www.jb51.net/article/91611.htm 和https://blog.csdn.net/flyfrommath/article/details/52999100。
引數:按照圖示即可。%{CurrentDocument:FilePath}
工作目錄:圖示即可。%{CurrentDocument:Path}
Environment:QT_LOGGING_TO_CONSOLE = 1
e. 右擊專案名稱——新增新檔案,選擇新增Python File,名稱為test112,回車確定。
f. 編輯test112.py如下:
g. 測試執行:工具——外部——RunPy——python3.5,在概要資訊中輸出結果。
2.Python官方提供的與C++互動程式設計方法。
a. 配置路徑和LIBS:網上大多數提供的是Python2.7的配置方法,由於我入門Python時學的是Python3,所以在此將Python3的路徑和LIBS用於Qt中。在Python官網,可以找到如下段落:該文章提供了配置INCLUDEPATH和LIBS的方法。
b. 針對不同的環境可能配置方法不同,這裡介紹一種能夠找到自己電腦最適宜的配置方法。
- sudo updatedb
- locate python3.5-config #得到python3.5-config的絕對路徑,我的是:/usr/bin/python3.5-config
- 如果找不到python3.5-config,則是因為沒有安裝python3.5-dev,sudo apt install python3.5-dev即可
- 開啟終端輸入:/usr/bin/python3.5-config --cflags #得到INCLUDEPATH的內容
- 開啟終端輸入:/usr/bin/python3.5-config --ldflags #得到LIBS的內容
- INCLUDEPATH += -I/usr/include/python3.5m -I/usr/include/python3.5m -Wno-unused-result -Wsign-compare -g -fstack-protector-strong -Wformat -Werror=format-security -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
- LIBS += -L/usr/lib/python3.5/config-3.5m-x86_64-linux-gnu -L/usr/lib -lpython3.5m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
c . 注意!!!到此並沒有配置結束,由於我配置的是Python3.5,所以當改動已編譯執行通過的檔案後再次執行編譯指令會出現如下錯誤,我在Stack Overflow上找到了解決方法。在.pro檔案下新增:
CONFIG += no_keywords即可
d. 在main.cpp中main函式中編寫呼叫test112.py的程式。指令的具體含義大家可以參考:https://segmentfault.com/a/1190000000531613
e. 編譯執行,結果如下:
f. 我在執行時,老是出現“can't open python file”問題,苦思無果。最後發現是程式中的“import numpy as np”有問題,因為這裡配置的python3直譯器是系統安裝的,與前面的PyCharm不同,沒有安裝第三方庫。關於第三方庫的安裝,大家可以參考:這裡可以參考:http://www.jb51.net/article/91611.htm https://blog.csdn.net/flyfrommath/article/details/52999100。
3.使用PythonQt庫
這裡大家可以參考:https://www.cnblogs.com/xia-weiwen/p/7932379.html。
我在編譯按照上述部落格操作時,出現了無法找到
private/qmetaobjectbuilder_p.h
檔案的問題,但是搜尋整個就計算機發現確實存在此檔案。找了好久沒有找到解決方法,最後我把PythonQt的安裝資料夾放在了/opt/Qt5.5.1/5.5/gcc_64/include/QtCore/5.5.1/QtCore下,編譯通過。此外,在Stack Overflow上也提供瞭解決辦法,點此檢視。
相關文章
- python讀取檔案指定行的三種方法Python
- Python逐行讀取檔案常用的三種方法!Python
- linux下qt用c++呼叫pythonLinuxQTC++Python
- Python呼叫C++編寫的方法PythonC++
- python儲存檔案的幾種方法Python
- Python判斷物件是否為檔案物件(file object)的三種方法Python物件Object
- python讀取大檔案的幾種方法Python
- Python|讀、寫Excel檔案(三種模組三種方式)PythonExcel
- python讀取文字檔案內容的方法主要分為哪三種?Python
- 三種簡單的PDF檔案快速壓縮方法
- C++ Qt開發:QFileSystemModel檔案管理元件C++QT元件
- C++中有三種建立物件的方法C++物件
- Sqlserver移動檔案路徑move datafile的三種方法SQLServer
- C++ Qt開發:QFileSystemWatcher檔案監視元件C++QT元件
- 快速排序的三種實現方法 (C++)排序C++
- Python中用來排序的方法sort、sortedPython排序
- 三種引入javascript檔案的方式JavaScript
- 技術積累——C++ 呼叫 python 專案C++Python
- 15種下載檔案的方法
- 下載檔案的15種方法
- Python基礎之list列表寫入檔案的四種方法Python
- Tomcat 部署專案的三種方法Tomcat
- Python中4種方法實現 xls 檔案轉 xlsxPython
- Android中js呼叫java本地方法的三種方式AndroidJSJava
- 作業系統——檔案的三種外存形式及檔案儲存空間的管理方法作業系統
- 三種方法教你在 Mac 上顯示隱藏檔案Mac
- Python 高階技巧:深入解析讀取 Excel 檔案的多種方法PythonExcel
- QT從入門到入土(三)——檔案的讀寫操作QT
- 流量中提取檔案的若干種方法
- 監聽檔案修改的四種方法
- 計算檔案Checksum的幾種方法
- 大檔案傳輸的9種方法
- C/C++讀取SEGY檔案(三)C++
- Java中獲取JAR檔案中資源路徑的三種方法JavaJAR
- Qt專案檔案.proQT
- python和c++的相互呼叫教程PythonC++
- python對檔案的操作方法Python
- 在nginx location中用alias代理檔案Nginx