gpt4 book ai didi

python - 无法在 Linux 上导入 ctypes

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:13 24 4
gpt4 key购买 nike

我有 Linux Ubuntu x64 14.04,安装了 Python 3.4(Ubuntu 默认安装)。如果我打开 CudaText 文本编辑器,它无法在控制台中导入 ctypes:

>>>> import ctypes
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.4/ctypes/__init__.py", line 7, in <module>
from _ctypes import Union, Structure, Array
ImportError: /usr/lib/python3.4/lib-dynload/_ctypes.cpython-34m-x86_64-linux-gnu.so: undefined symbol: PyFloat_Type

好像Py3.4安装不完整?为什么无法加载ctypes?

最佳答案

在 Debian Linux 发行版(例如 Ubuntu)中,Python 扩展模块是假设全局加载 Python 符号而构建的,因此它们不会在 ELF header 中明确列出 Python 库作为要求。动态链接的嵌入应用程序需要将Python共享库加载到全局符号表中,例如dlopen("libpython3.4m.so", RTLD_GLOBAL | RTLD_NOW)

CudaText 的作者编辑器正在使用Python for Lazarus 。我认为这使用 dynlibs 。正如您在源代码中看到的,它不会使用 RTLD_GLOBAL 调用 dlopen。默认值为 RTLD_LOCAL (0)。

关于python - 无法在 Linux 上导入 ctypes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com