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