2014-01-29 115 views
3

我在python-pyramid上部署我的项目,使用pyenv python版本2.7.5。现在在处理过程中,我收到内存泄漏错误。这个错误是第一次出现。在系统python 2.7.3的其他服务器上,不会发生此错误。python中的内存损坏

我已经看到其他职位建议捕获内存转储像valgrind工具。但我不确定如何在python-pyramid中使用它。

内存转储非常大,而且stackoverflow不允许我在这里发布。所以它可在http://pastebin.com/atUW89eX

有什么建议吗?

更新:

  1. 我们使用apt-get的,但我们在pyenv需要下python2.7.5 UNO安装蟒蛇联合国办事处。所以我们将Python2.7.3中的uno.py和unohelper.py复制到Python2.7.5。
  2. 根据this libreoffice支持Python2.7.5。

回答

-1

该错误发生在pyuno的调用中,该函数包装了libreoffice的本机代码。

我假设你通过pyuno/libreoffice创建/修改文档。恕我直言,你应该在pyuno涉及的地方通过声明调试程序声明(例如,通过注释声明和运行程序)。这或获取libreoffice库中的调试信息。

从签名,我的猜测是,你正在传递一个应该是unicode的字符串对象,而不是。

+0

这很可能是问题是传递的对象是unicode,而不是字节。 – Marcin

0

有几个潜在的问题与pyuno:

  1. 错误Python版本。你必须使用与soffice一样的Python完全相同的版本。您还必须使用相同的unicode选项(即UCS4或UCS2)进行编译。

  2. pyuno接口不是非常健壮。您只能通过字节流而不是unicode流

那些是大的。您还需要基础知识,比如拥有正确的LD_LIBRARY_PATH和PYTHONPATH。

+0

我已经更新了这个问题,并且从链接中我相信当前安装的python-uno版本可以与Python2.7.3和Python2.7.5一起使用。我对么? – cisnik

+0

@cisnik不,它必须是确切的点版本。我不能保证一个人就能解决问题,但有必要消除这种错误的根源之一。您还应该发布导致此问题的代码,以防类型不匹配。 – Marcin