我在瞎折腾,试图制造类似IPython/Jupyter笔记本的东西。我在QT5中编写我的应用程序,这其中大部分与在本机应用程序中“嵌入”Python有关。在

我发现了如何嵌入python以及如何允许它执行用户输入的脚本。我希望能够使用打印库(如matplotlib),并在我的应用程序中显示它们的输出。(事实上,我要做的事情似乎与this question中描述的非常相似)。在

但是,当我试图使用import matplotlib.pyplot导入绘图库时,我的应用程序出现了错误(我尝试了调试,但崩溃不在我的代码中,因此我无法从中得到任何合理的结果)。在

我用来初始化嵌入式Python和运行任意脚本的代码显示在这个问题的底部。在

我可以很好地导入其他库(例如sys或numpy)。我可以很好地导入matplotlib。但是当我试图导入matplotlib.pyplot时,它会出错。在

有人有什么建议吗?在

编辑:

我已经确定原因在于(出于某种原因)我使用QT。当我编译一个简单的C或C++程序导入MatpTLIB时,它就没有< EM>不是EEM> SeGebug…在

我的代码:#include "pythoninteractor.h"

#include

#include

#include

#include

PythonInteractor::PythonInteractor()

{

this->pyOutput_redir =

"import sys\n\

class CatchOutErr:\n\

def __init__(self):\n\

self.value = ''\n\

def write(self, txt):\n\

self.value += txt\n\

catchOutErr = CatchOutErr()\n\

sys.stdout = catchOutErr\n\

sys.stderr = catchOutErr\n\

"; //this is python code to redirect stdouts/stderr

QString paths[] = {"",

"/home/tcpie/anaconda3/lib/python35.zip",

"/home/tcpie/anaconda3/lib/python3.5",

"/home/tcpie/anaconda3/lib/python3.5/plat-linux",

"/home/tcpie/anaconda3/lib/python3.5/lib-dynload",

"/home/tcpie/anaconda3/lib/python3.5/site-packages",};

Py_SetProgramName(L"qt-notepad-tut");

Py_Initialize();

PyObject *pModule = PyImport_AddModule("__main__"); //create main module

PyRun_SimpleString(this->pyOutput_redir.toStdString().c_str()); //invoke code to redirect

PyObject *sys_path;

PyObject *path;

sys_path = PySys_GetObject("path");

if (sys_path == NULL)

return;

PySequence_DelSlice(sys_path, 0, PySequence_Length(sys_path));

for (size_t i = 0; i < sizeof(paths) / sizeof(QString); i++) {

path = PyUnicode_FromString(paths[i].toStdString().c_str());

if (path == NULL)

continue;

if (PyList_append(sys_path, path) < 0)

continue;

}

}

QString PythonInteractor::run_script(QString script)

{

QString ret = "";

PyObject *pModule = PyImport_AddModule("__main__");

PyRun_SimpleString(script.toStdString().c_str());

PyErr_Print(); //make python print any errors

PyObject *catcher = PyObject_GetAttrString(pModule,"catchOutErr"); //get our catchOutErr created above

if (catcher == NULL) {

Py_Finalize();

return ret;

}

PyObject *output = PyObject_GetAttrString(catcher,"value"); //get the stdout and stderr from our catchOutErr object

if (output == NULL) {

return ret;

}

ret = QString(PyUnicode_AsUTF8(output));

return ret;

}

python导入matplotlib出错,嵌入的python在导入时崩溃matplotlib.pyp相关推荐

  1. python导入pandas出错_在python中导入Pandas总是会出错

    我正在使用python 3.6,windows 7,pyCharm IDE . 尝试使用 import pandas 导入pandas时,我不断收到此消息 . 文件"C:\ Users \ ...

  2. python excel读取出错_编码 - python读取excel数据出错

    比如说我要读取 http://basic.10jqka.com.cn/600383/xls/Important_declaredate.xls 的数据信息,用的是xlrd程序包. import xlr ...

  3. 扩展和嵌入Python解释器 Extending and Embedding the Python Interpreter

    2007年开始使用Python与C的交互编程,那时分享了一篇<使用C/C++扩展Python> http://gashero.yeax.com/?p=38 .8年过去了,很多技术时过境迁, ...

  4. python导入pandas出错_构建d时如何解决python-pandas导入错误

    嗨,我要为我的python代码构建一个docker,在运行docker时,我得到import pandas import错误,如下所示File "app.py", line 3, ...

  5. gdb -iex_如何使用IEX Cloud,Matplotlib和AWS在Python中创建自动更新数据可视化

    gdb -iex Python is an excellent programming language for creating data visualizations. Python是用于创建数据 ...

  6. python怎么用matplotlib生成图表_Python让图表奔跑起来,Matplotlib的神奇用处

    开场白 诚然,在数据为王的时代,数据很值钱.而如何将数据处理的通俗易懂.博人眼球则更加考验技术人员. 越来越多的公司开始使用Python进行数据处理.其中,对处理过的数据进行图表生成则变得必不可少.一 ...

  7. python添加库详细教程_Python 中如何自动导入缺失的库?|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No mo ...

  8. Python小白的数学建模课-02.数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python小白的数学建模课 @ Youcans』 带你从数模小白成为国赛达人. 1. ...

  9. Python之数据分析(Numpy通用属性、数据可视化与matplotlib库通用函数)

    文章目录 一.ndarray属性 二.数据可视化 一.ndarray属性 1.通用属性 dtype:数组类型 shape:数组维度 T:转置视图 ndim:维数(一维是1,二维是2,三维是3--) s ...

最新文章

  1. c语言怎么将n个数字存入到数组中_洛谷 || 拼数(C语言)
  2. Httpclient学习日记(一)
  3. POJ 3275 Ranking the Cows (floyd传递闭包)
  4. echart 实例显示位置_技术分享:如何在Unity中使用实例化渲染?
  5. 编译ARM平台的 QtEmbedded 的MySQL插件和移植MySQL到ARM开发板
  6. java ora 00911_ORA-00911错误
  7. [转]面向接口编程详解(一)——思想基础
  8. 转:Openflashchart笔记
  9. 数据结构实验 寻找数组主元素(2013考研题)
  10. 北交大计算机保密专业,国内12所神秘的保密学院,毕业就是铁饭碗
  11. [Java] 蓝桥杯 BASIC-10 基础练习 十进制转十六进制
  12. dell vfoglight
  13. 奇幻电影《诛仙I》影评数据分析
  14. Google浏览器Chrome安装失败,错误代码0xa0430721解决办法
  15. 【CF802O】April Fools‘ Problem (hard)(wqs二分,模拟费用流,老鼠进洞)
  16. 八皇后算法—java
  17. js截取url所带参数方法与url截取字段中包含中文会乱码的解决方案
  18. 试设计一个窗口,内含一个按钮。开始运行时,按钮显示“Click Me”字样,当按钮按下时,按钮显示为“Click Me Again”字样,再按一次,则按钮显示“Click Me”字样,依此循环。
  19. 全国计算机二级---公共基础部分知识点(自用总结)
  20. GEE基础-大影像下载

热门文章

  1. Postgresql 开启SSL连接
  2. js如何将内容添加到剪切板?
  3. tiup cluster upgrade
  4. 脱壳工具:frida-dexdump的使用详解
  5. 火影忍者:五只眼睛中分别藏了一名忍者,你能认出他们是谁吗?
  6. 【报告分享】2022中国化妆品行业发展趋势洞察-易观分析(附下载)
  7. 人工智能(AI)的模式识别、机器学习和深度学习
  8. kubectl get pods指令说明
  9. 建站前的10个因素决定个人网站的成败
  10. PYNQ-Z2 镜像烧录设备启动网络设置