- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个同时嵌入了 python2 和 python3 解释器的程序。 libpython 共享库由提供对解释器的访问权限的相应命令dlopen()
编辑,每个解释器维护自己的状态。
如果用户只使用纯 python 模块或内置函数,这一切都可以正常工作。尝试加载 C 扩展(如 termios)然后提示“ undefined symbol :PyExc_TypeError”。发生这种情况是因为 C 扩展没有链接到 libpython。 Python 上游并不认为这是一个 problem .
为了解决这个问题,我可以更改程序中的 dlopen()
调用以使用 RTLD_GLOBAL
的 libpython 共享库。但是,一旦我这样做,尝试在程序的同一 session 中同时使用 python2 和 python3 解释器会导致它在为第二个调用的解释器调用 Py_Initialize
的过程中中断。仅使用一名口译员就可以正常工作。
当 C 扩展不会链接到 libpython,因此需要使用 RTLD_GLOBAL
时,知道如何让它工作吗?
最佳答案
抱歉,这不会按照您希望的方式工作。解决方案通常涉及将每个扩展链接到版本化的 libpython 符号;或者可以有一个支持 namespace 的链接器,这样就可以将每个库映射到不同的 namespace ,而不是全局 namespace 。不幸的是,这两个选项都不容易应用,因此您可能受困于多进程模型。简单地 fork 并有一个进程链接到每个版本的 Python。那么困难的一点是如何共享任何导致您首先需要两个不同的 Python 解释器的数据。也许对导致问题的问题的描述可能有助于找到更好的解决方案?
关于python - 动态加载两个 libpython 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3320742/
在 this question 的后续问题中,我的企业环境缺少 libpython2.6.so 共享对象,但有 libpython2.6.a 文件。有没有一种方法可以在 libpython2.6.a
构建 rPython 包时,我在 R 中遇到错误,特别是链接 libpython2.7 的部分: gcc -std=gnu99 -I/foo/bar/R-3.1.1/lib64/R/include -
我有一个同时嵌入了 python2 和 python3 解释器的程序。 libpython 共享库由提供对解释器的访问权限的相应命令dlopen()编辑,每个解释器维护自己的状态。 如果用户只使用纯
我没有让 vim 与 python 支持一起工作。我使用以下配置编译 vim 7.4.972: ./configure --enable-shared --with-features=huge --e
在较新的 Ubuntu/Debian 版本下,libpython2.7.so 位于 /usr/lib/i386-linux-gnu/libpython2.7.so 或 /usr/lib/x86_64-
我在 CentOS 5 上安装 Python 2.7。我构建并安装了 Python,如下所示 ./configure --enable-shared --prefix=/usr/local make
我在 macOS 上使用 Conda,在构建 Rust 包时遇到错误,它找不到 libpython3.7m.dylib 库。我怎样才能找到它? 经过一些研究,在 Linux 上,您通常可以从 Ubun
Following the instructions on the PyCall.jl readme ,在我的 julia 项目(在它自己的环境中)使用 PyCall 时,我想使用 pipelinen
我正在运行 arch,在我之前设置的一个项目中,我使用 virtualenv 设置了一个小 python 沙箱。此时,我的机器上的默认 python 版本是 3.2 它已经升级到 3.3,但是当我进入
我正在构建 vim 的 YouCompleteMe 插件,遵循这个 document .当我运行 make 时,出现以下错误。 Linking CXX shared library /home/sag
我在 iOS 应用程序中嵌入了 libPython.a,我正在使用 PyRun_SimpleFileEx 运行脚本: Py_SetPythonHome((char *)[resourcePat
是否有任何独立于平台的方法来获取 python 安装的 libpython 的路径,以用作 cmake 参数? sysconfig.get_config_var 提供了一些片段,但我没有一致的方法可以
我问了另一个问题,这个问题太复杂了,无法直接回答,所以我把它归结为这个基本问题...... 当我使用标准的 cython distutils 构建我的 aModule.so 时,它似乎没有链接到 li
我一直在研究 project使用 libpython2.7.so 将 Python 解释器作为 MEX 文件嵌入到 MATLAB 中,但是每当我尝试导入作为扩展模块实现的 Python 模块时都会遇到
我正在尝试在 arm 设备的嵌入式解释器中运行 python 代码;使用 marmalade studio 在 visual studio 2012 中构建。 我已经构建了我的存档静态链接库,li
我正在尝试在我的代码中记录热点,以便能够使用多线程对其进行优化。 我首先运行在容器外安装了 pyflame sudo apt-get install autoconf automake autotoo
我是一名优秀的程序员,十分优秀!