无法在嵌入式Python中导入特定模块

0 投票
1 回答
875 浏览
提问于 2025-04-17 04:33

我在用Obj-C运行一个嵌入式的Python解释器。我可以顺利运行Python脚本,但当我尝试导入某些标准模块时,比如说ImportError: No module named random,就会出现错误。

不过,我可以导入其他一些模块。经过我的调查,目前我得到了以下这个列表:

可以导入:

  • import sys
  • import math
  • import datetime
  • import time

不能导入:

  • import random
  • import re
  • import cmath
  • import numbers
  • import string

这些模块是从一个封装在包里的Python文件中导入的,通过PyImport_Import ('package.module')来实现的。还有一个扩展模块是通过Py_InitModule加载的。

我使用的是Python 2.7.0,为什么有些模块可以用而有些不可以呢?

1 个回答

0

Thomas K让我找到了正确的方向,尽管我的问题其实是完全相反的。

我的Python环境缺少了标准的Python库,也就是用Python写的那部分(通常会放在/Library、/Lib或者/pylib这些地方)。一旦把这些文件添加到我的应用程序里,所有的东西都能正常导入了。

所以,上面提到的可导入和不可导入的模块之间的关系是:可导入的模块是用C语言写的Python扩展,而不可导入的模块则是用纯Python写的。

撰写回答