gpt4 book ai didi

python - 将pybind11嵌入虚拟环境

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:04:16 29 4
gpt4 key购买 nike

我正在尝试使用 pybind11 将 python 嵌入到我的 C++ 应用程序中。使用以下 CMake 属性,我设法针对项目的虚拟环境进行了编译。

-DPYTHON_EXECUTABLE:FILEPATH=C:/Python/Envs/myproject/Scripts/python.exe

当我运行该应用程序时,我收到一个没有特定错误的错误(如下)。但是我认为它无法加载我正在加载的模块 numpy。

abort() has been called

#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;
}

如果我只导入 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)]

我已将以下目录添加到我的 PATH 中。

PATH=C:\Python\Envs\project\Scripts;C:\Python\Envs\project\Lib

我是否必须指定我正在使用的 python 解释器的其他部分的路径,或者这可能是由其他问题引起的吗?

最佳答案

我必须将 PYTHONPATH 设置为站点包

set PYTHONPATH=C:\Python\Envs\project\Lib\site-packages

代替 C:/Python/Envs/project/

关于python - 将pybind11嵌入虚拟环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53480120/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com