在嵌入式 Python C++ 应用程序中导入 Numpy
Posted
技术标签:
【中文标题】在嵌入式 Python C++ 应用程序中导入 Numpy【英文标题】:Importing Numpy in embedded Python c++ application 【发布时间】:2016-10-29 15:35:27 【问题描述】:我想让一个脚本通过设置运行时路径来从 c++ 嵌入式 python 运行时调用 numpy,以了解位于站点包中的 numpy 模块。
但是我得到了错误:
无法导入名称'multiarray'
从\Lib\site-packages\numpy\core__init_.py就行了
from . import multiarrray
我尝试将 os.path 设置为 xxx\numpy\core 但在导入语句期间似乎仍然找不到 multiarray.pyd 文件
我已阅读提出的类似问题,但似乎没有一个答案与我的案例相关。
我正在使用 Python 3.4.4(32 位)并使用***安装了 Numpy 1.11.1 numpy-1.11.1-cp34-none-win32.whl
python -m pip install numpy-1.11.1-cp34-none-win32.whl
已完成,没有任何错误。
似乎失败消息可能是 more general 而不仅仅是不完整的 PYTHONPATH?
还认为它可能比 Numpy 更广泛,因为从嵌入式环境导入的基于 ANY .pyd 的包会有这个问题?
任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:您是否确保所有 NumPy 包括:\numpy\core\include\numpy\ 在构建期间都存在?那是我唯一一次遇到这些类型的错误是如果构建找不到所有 NumPy 包含...虽然在嵌入期间我发现 numpy
整个目录(已经在您的构建机器上构建)必须在Py_SetPath(python35.lib;importlibs);
下的目录,假设 importlibs 是一个目录,里面有 NumPy 和你想要捆绑的任何其他东西。
【讨论】:
谢谢。是的,我做到了。我们已经设法让它在另一个系统上运行。唯一的区别是使用 python 3.4.1 而不是 3.4.4(python34.dll 用于 python 3.4.1)【参考方案2】:似乎答案是安装 python 3.4.1 以匹配 3.4.1 的 python34.dll 版本。
【讨论】:
以上是关于在嵌入式 Python C++ 应用程序中导入 Numpy的主要内容,如果未能解决你的问题,请参考以下文章
如何在 boost::python 嵌入式 python 代码中导入模块?
如何在 C++ 程序将使用的 Python 脚本中导入 cpython 模块?
如何在 Python 中导入 tensorflow lite 解释器?
如何使用 Java Native Interface 在 C++ 中导入 python 库 - Android Studio