我似乎无法导入位于“lib-dynload”目录中的任何基本模块。它们都在那里,但在尝试导入它们时出现错误:"ImportError: No module named X"
。
我检查了我的 sys.path
,它包括所有这些模块所在的目录,并且我的 PYTHONHOME 环境变量设置正确。对于问题可能是什么,我有点不知所措。一些背景信息:这是从 Python 2.6.6 源代码交叉编译并安装到带有 Angstrom 的 ARM 嵌入式 Linux 板上。
它之前确实有 python,我曾尝试将它位烘焙到图像中,但它丢失了很多东西。在加载到我的交叉编译版本之前,我最终尽我最大的努力清理目录树中与以前的 python 相关的任何内容。
只是尝试导入 math
的简单脚本的 strace:http://pastebin.com/3XgJ3nPR
最佳答案
我在该跟踪中没有看到像 math.so
或 mathmodule.so
这样的文件名的检查,这可能表明共享对象模块已完全关闭——版本您编译的 Python 无法动态加载二进制模块。
更多:查看我最近的 Python 构建中的 config.out
,我看到几行 Python 正在调查平台是否允许它动态加载二进制模块以 .so
结尾:
checking for dlopen... yes
checking DYNLOADFILE... dynload_shlib.o
checking MACHDEP_OBJS... MACHDEP_OBJS
这些行在您的交叉编译中说明了什么?
关于python - 交叉编译的 Python 找不到基本模块(数学、运算符等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925419/