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
- Python 判斷檔案是否存在的三種方法Python
- python讀取檔案指定行的三種方法Python
- Delphi中用於讀寫(I/O)的三種檔案型別 (轉)型別
- linux下qt用c++呼叫pythonLinuxQTC++Python
- Python|讀、寫Excel檔案(三種模組三種方式)PythonExcel
- Python呼叫C++編寫的方法PythonC++
- python儲存檔案的幾種方法Python
- Python判斷物件是否為檔案物件(file object)的三種方法Python物件Object
- C#在類中用呼叫Form的方法C#ORM
- python讀取文字檔案內容的方法主要分為哪三種?Python
- python讀取大檔案的幾種方法Python
- C++中有三種建立物件的方法C++物件
- 三種簡單的PDF檔案快速壓縮方法
- Linux 下系統呼叫的三種方法Linux
- Python 呼叫py檔案Python
- 快速排序的三種實現方法 (C++)排序C++
- Sqlserver移動檔案路徑move datafile的三種方法SQLServer
- C# 讀取EXCEL檔案的三種經典方法C#Excel
- C++ Qt開發:QFileSystemModel檔案管理元件C++QT元件
- Python四種逐行讀取檔案內容的方法Python
- qt呼叫js,js呼叫qtQTJS
- 三種引入javascript檔案的方式JavaScript
- VMWARE 中 LINUX 於WINDOWS 交換檔案的三種方法薦LinuxWindows
- react中三種函式呼叫方法總結React函式
- python 字典訪問的三種方法Python
- C++ Qt開發:QFileSystemWatcher檔案監視元件C++QT元件
- 利用swig實現python呼叫C/C++的方法PythonC++
- 下載檔案的15種方法
- 15種下載檔案的方法
- oracle 表空間下資料檔案遷移的三種方法Oracle
- Java中獲取JAR檔案中資源路徑的三種方法JavaJAR
- Python中用來排序的方法sort、sortedPython排序
- 三種方法教你在 Mac 上顯示隱藏檔案Mac
- Android中js呼叫java本地方法的三種方式AndroidJSJava
- 作業系統——檔案的三種外存形式及檔案儲存空間的管理方法作業系統
- Tomcat 部署專案的三種方法Tomcat