free pascal 中的 Python+Numpy 模块

标签 python numpy freepascal delphi

在 free pascal 中为 Python 开发模块 (.pyd) 相当容易,请参阅 Developing Python Modules with Pascal .但如果我想与 numpy 交互,这就没那么容易了。 使用 C 与 numpy 接口(interface)时,必须添加 #include <numpy/arrayobject.h>代码,并调用 import_array();在初始化函数中。

有没有办法在 pascal 中与 numpy 交互?

编辑1

如@wilberforce 回答下的评论中所述,import_array头文件中定义的函数只是将 multiarray.pyd 模块导入当前解释器并进行一些检查。它很容易翻译成 Pascal 并且有效。

numpy C-API 函数最初不存在于 pythonXX.dll 中,因此无法静态链接它们。与 multiarray.pyd 的静态或动态链接对我不起作用。

所以更新后的问题是:有没有办法从非 C 代码访问嵌入在 multiarray.pyd 中的 C-API 函数?

最佳答案

从 Pascal 的角度来看,像对待任何其他 C 库一样对待 numpy 库 - 您需要包含 header 并将 import_array 声明为 external cdecl 函数。

This guide涵盖细节。

为了编写 Python 扩展模块,您已经需要完成其中的一些工作,这样您的 Pascal 代码就可以使用 Python API 函数与 Python 对象进行交互。您可以在 cdecl 中看到这一点; external PythonLib; 您链接到的示例中的修饰符。可能您在执行此操作时不清楚。

关于free pascal 中的 Python+Numpy 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19973572/

相关文章:

Python json - 编辑 .json 文件

python - 如何修复 python3.4 中没有名为 parse 的模块

python - 从python中的本地目录导入训练数据

python - numpy 中球坐标创建四元数

python - 如何计算一个值在数组中出现了多少次

pascal - 在类声明中定义方法体?

python - 在 Python 中使用正则表达式查找首字母缩略词

python - 具有不同数据类型的 Numpy 数组

delphi - 如何将整数值转换为 3 位点分隔的字符串

delphi - 使用FPC : Allocation and Pointers编写Scheme解释器