怎樣在python程序中嵌入C程序片段?
在c中嵌入python有一些步驟。
安裝python程序,以便可以使用python頭文件和庫。
添加"Python.h"頭文件鏈接到我們編寫的源文件,并將其鏈接到"python**。lib"庫(需要明確這個庫是靜態庫還是導出庫)。
掌握并理解一些pythonC語言API,用于我們的C程序。
一些常用的CAPI函數
在理解以下函數之前,有必要知道**PyObject***指針。python中幾乎所有的對象都由這個指針指示。
py_Initialize()ampampPy_Finalize()
在調用任何pythonc函數之前需要調用的函數初始化"用于初始化python模塊,大概是加載初始化加載dll。相應地,使用"最終確定"在使用python模塊后釋放它。
Pyimport_importModule()
用于加載python模塊,這是一個通用的python文件。這里需要注意的是,當模塊被加載時,模塊中所有的可執行語句都會被執行。包括import語句和函數體外部的所有語句。
PyObject_GetAttrString()
返回模塊中的函數。
Py_BuildValue()
創建參數元組,通常用這個函數創建一個元組,然后這個元組作為參數傳遞給python中的函數。
Pyeval_CallObject()
調用函數并傳遞由"Py_BuildValue"作為被調用函數的參數。
源代碼示例
下面的例子是調用PythonC代碼中的s函數,傳遞參數并獲取返回值。
Test.cpp代碼
#包含ltiostreamgt
#包含ltPython.hgt
使用命名空間標準
intmain(intargc,char*argv[])
{
Py_Initialize()//初始化
PyObject*pModule為空
PyObject*pFuncNULL
PyObject*pParam空
PyObject*預設為空
constchar*pBufferNULL
intiBufferSize0
p模塊Pyimport_importModule(";test_python";)
如果(!p模塊)
{
coutltlt獲取模塊失敗!ltltendl
退出(0)
}
pfuncpyobject_GetAttrString(pmodule,main)
如果(!pFunc)
{
coutltltgetfunc失敗!ltltendl
coutltltint(pFunc)ltlt
python如何打包成exe文件?
在之前的文章《《讓你的代碼更好的交付,使用Python實現模塊打包發布》》中,分享了測試開發工程師在交付時,使用車輪庫將交付模塊封裝成.whl文件,達到了提高交付部署效率的目的。同時,采用統一的發布,也有助于提高測試開發的標準化程度。
除了發布模塊可以打包成。whl。
格式化文件,對于一些小型的測試工具發布場景,分享一種更適合的發布——打包成可執行文件。exe程序,讓用戶即使在沒有Python的環境下也依然可以直接運行,進一步降低使用成本,提高使用效率。
接下來,讓我們分享如何使用PyInstaller庫將發布模塊打包成一個。exe格式文件。
建議通過pip安裝PyInstaller,否則可能會報錯其他依賴庫缺失,需要手動逐個安裝。
Pip安裝PyInstallerPyInstaller使用下面這個簡單的代碼示例,其中導入了Python內置的library-Time模塊和第三方library-csv模塊,這樣每次運行時都可以將固定數據寫入新生成的csv文件中。
在模塊目錄下執行以下命令,執行日志如下:
您可以在其中看到。uildwritefiles.exe文件已經在當前目錄下生成。
當我們執行WriteFiles.exe時,我們可以發現WriteFile_1550935956.csv文件已經被添加到當前目錄中。
PyInstaller-F常用參數說明:打包單個文件,生成的結果是一個。exe格式文件。-D:打包多個文件,生成的結果是一個目錄,包括第三方依賴,資源,。exe文件等。適合用框架的形式寫工具模塊,帶默認參數。-c:使用Windows控制臺子系統來執行、顯示命令行窗口和默認參數。-w:由Windows子系統執行,程序啟動時不會打開命令行。這個參數在編寫GUI程序時很有用。-p:指定一個額外的導入路徑,類似于PYTHONPATH,多個目錄可以使用路徑分隔符(Windows用分號,Linux用冒號)。–-add-data:打包附加資源,多個資源可以使用路徑分隔符(Windows用分號,Linux用冒號)。––add-binary:打包多余的代碼,多個代碼可以使用路徑分隔符(Windows用分號,Linux用冒號)。同時,將添加–-add-binary添加文件的引用文件。-i:添加圖標的圖標。exe文件。-n:編輯的文件名。exe和。規格。我們嘗試使用-F,-n參數只生成一個。exe文件,文件名為Toutiao。我們執行以下命令并運行日志,如下所示:
pyinstaller-f-nToutiao.exe其中distToutiao.exe文件生成在當前目錄下,目錄結構如下。
除了PyInstaller模塊,還可以將模塊打包成。exe格式,還可以了解pyexe模塊,也可以達到同樣的打包效果,所以我贏了這里不單獨介紹了。
如果對你有幫助,歡迎評論留言。