如何编译整个 Python 库及其依赖项,以便它可以在 C 中使用(无需调用 Python 的运行时)。也就是说,编译后的代码嵌入了 Python 解释器,不需要在系统上安装 Python。
据我了解,当使用 Cython 编译 Python 代码时:
--embed
如果使用参数,则不调用 python 运行时- 单独编译文件
- 允许调用不同的模块(从 Python 运行时/其他编译的 Cython 文件)
尚不清楚的问题是:
- 如何从 C 中使用这些模块文件?编译后的 Python 文件在 C 中使用时可以调用其他编译后的 Python 文件吗?
- 只需要声明库入口点还是需要声明所有函数?
- 如何管理 Python 依赖项?如何编译它们(这样就不需要 Python 运行时)。
module
一个名为where __init__.py
is an empty file的 Python 库的简化示例:
module/
├── run.py
├── http/
│ ├── __init__.py
│ ├── http_request.py
http_requests.py
包含:
import requests
def get_ip():
r = requests.get('https://ipinfo.io/ip')
print(r.text)
并run.py
包含以下内容:
from http import http_request
if __name__ == '__main__':
http_request.get_ip()
如何在get_ip
不使用 Python 运行时的情况下从 C 调用函数(运行应用程序时需要安装 Python)。
上面的例子很简单。实际用例是以高采样率在 C 语言中收集/处理机器人数据。虽然 C 非常适合基本数据处理,但也有优秀的 Python 库可以进行更全面的分析。目标是调用已在 C 中部分处理的数据的 Python 库。这将使我们能够更详细地了解数据(并“实时”处理它)。数据框架太大,我们的团队无法用 C 重写。