首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python.net导入clr引发无效指针错误

python.net导入clr引发无效指针错误
EN

Stack Overflow用户
提问于 2015-07-31 15:34:13
回答 2查看 1.7K关注 0票数 1

当我试图在python代码中导入clr时,我会得到以下错误:

代码语言:javascript
复制
*** Error in `python': free(): invalid pointer: 0xb0f1a120 ***
Stacktrace:

  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) Python.Runtime.Runtime.Py_Initialize () <0xffffffff>
  at Python.Runtime.Runtime.Initialize () <0x00023>
  at Python.Runtime.PythonEngine.Initialize () <0x00047>
  at Python.Runtime.PythonEngine.InitExt () <0x0000b>
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:

    /usr/lib/libmonoboehm-2.0.so.1(+0xcb5f4) [0xb1b5e5f4]
    [0xb7745d14]
    [0xb7745d1e]
    /lib/i386-linux-gnu/libc.so.6(gsignal+0x47) [0xb7592607]
    /lib/i386-linux-gnu/libc.so.6(abort+0x143) [0xb7595a33]
    /lib/i386-linux-gnu/libc.so.6(+0x68e53) [0xb75cce53]
    /lib/i386-linux-gnu/libc.so.6(+0x7333a) [0xb75d733a]
    /lib/i386-linux-gnu/libc.so.6(+0x73fad) [0xb75d7fad]
    /usr/lib/i386-linux-gnu/libpython2.7.so(PyString_InternInPlace+0x97) [0xb0b3a157]
    /usr/lib/i386-linux-gnu/libpython2.7.so(PyString_InternFromString+0x2f) [0xb0ad78ef]
    /usr/lib/i386-linux-gnu/libpython2.7.so(PyType_Ready+0xb50) [0xb0b356e0]
    /usr/lib/i386-linux-gnu/libpython2.7.so(_Py_ReadyTypes+0xcd) [0xb0b3d47d]
    /usr/lib/i386-linux-gnu/libpython2.7.so(Py_InitializeEx+0x6d) [0xb0b5d5dd]
    /usr/lib/i386-linux-gnu/libpython2.7.so(Py_Initialize+0x1b) [0xb0b5df7b]
    [0xb481553c]
    [0xb4814f2c]
    [0xb480af98]
    [0xb480ae84]
    [0xb480af0d]
    /usr/lib/libmonoboehm-2.0.so.1(+0x29723) [0xb1abc723]

Debug info from gdb:

Could not attach to process.  If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: Operation not permitted.
No threads.

=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

我发现了一个类似问题(https://mail.python.org/pipermail/pythondotnet/2014-October/001598.html)的引用,但我不知道如何使用npython二进制文件,而且我不希望使用启用共享库的python。

任何提示或帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-07 14:13:30

经过一些痛苦的试验,我成功地在代码中使用了import clr

首先,我需要以某种方式使用正确的二进制文件,为了实现这一点,我使用了pythonnet/pythonnet包的git的最新开发源代码。

您可以尝试:下载和安装最新开发源的$ sudo pip install --pre pythonnet。但是请记住,有一些额外的东西,所以我附上特拉维斯的建造细节。

代码语言:javascript
复制
system_info
Build language: python
Operating System:   Ubuntu 12.04 LTS
$ python --version
Python 2.7.9
$ pip --version
pip 6.0.7 from /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages (python 2.7)
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu/ trusty main universe"
$ sudo apt-get -qq install mono-devel mono-gmcs mono-xbuild nunit-console
$ sudo mozroots --import --machine --sync
$ yes | sudo certmgr -ssl -m https://go.microsoft.com
$ yes | sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net
$ yes | sudo certmgr -ssl -m https://nuget.org
$ pip install six

现在,使用pip安装pythonnet通常是成功的,您可以尝试在python代码中调用import clr。在我个人的例子中,即使在这种情况下,它也失败了,尽管它的安装没有错误。原因是,虽然我的python编译时没有--启用共享-运行。

代码语言:javascript
复制
$ python -c 'import sys; from distutils.sysconfig import get_config_var; print(get_config_var("Py_ENABLE_SHARED"))'

返回1,尽管它应该返回0。

所以我从git https://github.com/pythonnet/pythonnet下载了最新的开发源代码。

在将其放在正确的文件夹中之后,我编辑了setup.py,将正在检查共享库的变量设置为0,然后执行

代码语言:javascript
复制
$ sudo python setup.py install

脚本安装成功,没有错误,我可以在python脚本中使用导入clr。要确保一切正常运行,您可以运行:

代码语言:javascript
复制
$ python src/tests/runtests.py
票数 1
EN

Stack Overflow用户

发布于 2016-03-15 05:00:49

作为将来的参考,这将在Pythonnet第119期中得到解决。

加上..。

代码语言:javascript
复制
defines.append("PYTHON_WITHOUT_ENABLE_SHARED")

..。对于setup.py,然后使用python setup.py install [options]进行安装,实现与回答相同的效果。

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

https://stackoverflow.com/questions/31749990

复制
相关文章

相似问题

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