【问题标题】:Can't import specific modules in embedded Python无法在嵌入式 Python 中导入特定模块
【发布时间】:2011-12-09 23:59:26
【问题描述】:

我在 Obj-C 中运行嵌入式 Python 解释器。我可以很好地运行 Python 脚本,但是当我尝试导入某些标准模块时,我会得到 ImportError: No module named random,例如。

但是,我可以导入某些其他模块。到目前为止,我的调查给了我这个列表:

可以:

  • 导入系统
  • 导入数学
  • 导入日期时间
  • 导入时间

不能:

  • 随机导入
  • 重新导入
  • 导入 cmath
  • 导入号码
  • 导入字符串

这是来自包含在包中的 python 文件,通过 PyImport_Import ('package.module') 导入。通过 Py_InitModule 加载了一个扩展模块。

这是在 Python 2.7.0 上 - 有什么理由可以使用其中一些模块而其他模块不可用?

【问题讨论】:

  • 也许这些模块还没有包含在您正在运行的端口中?乍一看,这些模块可能都需要编译的组件(当然是 re 和 cmath),而这些组件可能尚未被移植。
  • 很好的发现。原来我没有包括 Python 标准库(/pylib 中的那些有趣的文件...)。现在我随机运行,但在 os.py 中加载它会中断。但这是另一个问题!
  • 您是否有机会分享如何让嵌入式 python 解释器在 obj-c 中运行 - 我一直遇到与您类似的问题

标签: python objective-c import


【解决方案1】:

Thomas K 让我走上了正轨,尽管问题完全相反。

我的 Python 设置缺少标准 Python 库 - 用 Python 编写的部分(通常通过分发中的 /Library、/Lib 或 /pylib 分发。将这些文件添加到我的应用程序后,所有文件都可以正常导入。

因此,上述可导入模块和不可导入模块之间的联系在于,可导入模块是用 C 语言编写为 Python 扩展,而不可导入模块是用纯 Python 编写的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 2021-07-11
    • 1970-01-01
    • 2014-08-09
    • 2020-07-02
    • 2022-09-27
    • 1970-01-01
    相关资源
    最近更新 更多