使用pybind11在C++中导入Python模块时程序无响应,无法继续执行
使用pybind11在C++中导入Python模块时程序无响应,无法继续执行
这段代码是我一个注册页面wxFrame的一部分,我想从C++中运行Python代码,根据Python文件的输出来切换窗口。
(我用了namespace pb = pybind11;,这样只需要用pb就能指代pybind11)
我做了些调试,发现是下面这行代码出了问题:
pb::module python_module = pb::module::import("python_functions");
程序没有返回错误,就是直接停在这里不继续执行了。
我花了一整天时间尝试修复这个bug,现在已经没思路了。Python文件名是对的,文件和VS项目在同一个目录里,我也修改了很多PATH设置来让C++能调用Python解释器(说不定我漏了什么?)
我单独测试过Python代码,完全能正常运行,所以问题肯定不在Python上,就是上面那行代码的问题。下面是完整的相关代码:
std::string python_username_input = input_values[0].ToStdString(); // convert the inputs into a string that Python can interpret std::string python_password_input = input_values[1].ToStdString(); pb::scoped_interpreter guard{}; pb::module sys = pb::module::import("sys"); // Import sys module sys.attr("path").attr("append")("[DIRECTORY TO FILE]"); pb::module python_module = pb::module::import("python_functions"); pb::object python_result = python_module.attr("SignUp")(python_username_input, python_password_input, check_values[0]);
任何帮助都很感激,这是我的项目需求,我真的得把这个问题解决。如果需要更多上下文或代码才能排查问题,请告诉我。会不会是我少包含了某个库?我已经包含了#include <pybind11/embed.h>,难道还漏了别的?
无论如何,感谢任何回复。
备注:内容来源于stack exchange,提问作者Calax
相关产品推荐
相关产品推荐

