擴展和嵌入 Python 解釋器?
本文檔描述了如何使用 C 或 C++ 編寫(xiě)模塊以使用新模塊來(lái)擴展 Python 解釋器的功能。 這些模塊不僅可以定義新的函數,還可以定義新的對象類(lèi)型及其方法。 該文檔還描述了如何將 Python 解釋器嵌入到另一個(gè)應用程序中,以用作擴展語(yǔ)言。 最后,它展示了如何編譯和鏈接擴展模塊,以便它們可以動(dòng)態(tài)地(在運行時(shí))加載到解釋器中,如果底層操作系統支持此特性的話(huà)。
本文檔假設你具備有關(guān) Python 的基本知識。有關(guān)該語(yǔ)言的非正式介紹,請參閱 Python 教程 。 Python 語(yǔ)言參考手冊 給出了更正式的語(yǔ)言定義。 Python 標準庫 包含現有的對象類(lèi)型、函數和模塊(內置和用 Python 編寫(xiě))的文檔,使語(yǔ)言具有廣泛的應用范圍。
關(guān)于整個(gè) Python/C API 的詳細介紹,請參閱獨立的 Python/C API 參考手冊 。
推薦的第三方工具?
本指南僅介紹了作為此 CPython 版本的一部分提供的創(chuàng )建擴展的基本工具。 第三方工具,如 Cython 、 cffi 、 SWIG 和 Numba 提供了更簡(jiǎn)單和更復雜的方法來(lái)為 Python 創(chuàng )建 C 和 C ++ 擴展。
參見(jiàn)
- Python Packaging User Guide: Binary Extensions
“ Python Packaging User Guide ”不僅涵蓋了幾個(gè)簡(jiǎn)化二進(jìn)制擴展創(chuàng )建的可用工具,還討論了為什么首先創(chuàng )建擴展模塊的各種原因。
不使用第三方工具創(chuàng )建擴展?
本指南的這一部分包括在沒(méi)有第三方工具幫助的情況下創(chuàng )建 C 和 C ++ 擴展。它主要用于這些工具的創(chuàng )建者,而不是建議你創(chuàng )建自己的 C 擴展的方法。
在更大的應用程序中嵌入 CPython 運行時(shí)?
有時(shí),不是要創(chuàng )建在 Python 解釋器中作為主應用程序運行的擴展,而是希望將 CPython 運行時(shí)嵌入到更大的應用程序中。 本節介紹了成功完成此操作所涉及的一些細節。