ipa*_*ipa 5 c++ python pybind11
我正在尝试使用 pybind11 将 python 嵌入到我的 C++ 应用程序中。使用以下 CMake 属性,我成功地针对项目的虚拟环境进行编译。
-DPYTHON_EXECUTABLE:FILEPATH=C:/Python/Envs/myproject/Scripts/python.exe
Run Code Online (Sandbox Code Playgroud)
当我运行该应用程序时,出现错误(如下),但没有具体错误。但是我认为它无法加载我正在加载的模块 numpy 。
abort() 已被调用
#include <iostream>
#include <pybind11/embed.h>
namespace py = pybind11;
int main() {
py::scoped_interpreter guard{};
auto sys = py::module::import("sys");
py::print("Hello, World from Python!");
py::print(sys.attr("executable"));
py::print(sys.attr("version"));
// works until here
auto np = py::module::import("numpy");
py::print(np.attr("version"));
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
如果我只导入 sys 模块(位于标准库中),应用程序就可以正常工作。这是崩溃之前应用程序的输出:
Hello, World from Python!
C:\Develop\sandbox\python_binding\cmake-build-debug\bin\python_binding.exe
3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]
Run Code Online (Sandbox Code Playgroud)
我已将以下目录添加到我的路径中。
PATH=C:\Python\Envs\project\Scripts;C:\Python\Envs\project\Lib
我是否必须指定我正在使用的 python 解释器其他部分的路径,或者这可能是由另一个问题引起的?
我必须将 PYTHONPATH 设置为 site-packages
set PYTHONPATH=C:\Python\Envs\project\Lib\site-packages
Run Code Online (Sandbox Code Playgroud)
代替C:/Python/Envs/project/