首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用虚拟环境嵌入pybind11

用虚拟环境嵌入pybind11
EN

Stack Overflow用户
提问于 2018-11-26 11:26:55
回答 1查看 1.8K关注 0票数 4

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

代码语言:javascript
复制
-DPYTHON_EXECUTABLE:FILEPATH=C:/Python/Envs/myproject/Scripts/python.exe

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

abort()被调用

代码语言:javascript
复制
#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模块(它位于标准库中),则应用程序可以正常工作。这是应用程序的输出,直到崩溃:

代码语言:javascript
复制
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=C:\Python\Envs\project\Scripts;C:\Python\Envs\project\Lib

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-28 10:08:55

我不得不将PYTHONPATH设置为site-packages

代码语言:javascript
复制
set PYTHONPATH=C:\Python\Envs\project\Lib\site-packages

而不是C:/Python/Envs/project/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53480120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档