在Python的imp中,“ImportError:没有名为...的冻结子模块”

2024-01-05

我正在尝试编写一个脚本,在目录中搜索具有给定名称的模块。我想使用find_modulePython的方法imp https://docs.python.org/2/library/imp.html。但是,我不太明白为什么以下不起作用。我位于包含模块的目录中iclib:

kurt@kurt-ThinkPad:~/dev/ipercron-compose/furion$ tree
.
├── iclib
│   ├── __init__.py

在该目录中我可以(在 iPython 中)导入iclib:

In [1]: import iclib

我也可以使用find_module没有path争论:

In [1]: import imp

In [2]: imp.find_module('iclib')
Out[2]: (None, 'iclib', ('', '', 5))

但是,如果我尝试使用find_module仅在当前目录中,我收到错误:

In [3]: import os

In [4]: imp.find_module('iclib', os.getcwd())
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-4-ada6f3744e78> in <module>()
----> 1 imp.find_module('iclib', os.getcwd())

ImportError: No frozen submodule named /home/kurt/dev/ipercron-compose/furion.iclib

为什么这不起作用?


按照此bugs.python.org 上的问题 http://bugs.python.org/issue6448, the path参数需要嵌入到列表中:

In [4]: imp.find_module('iclib',[os.getcwd()])
Out[4]: (None, '/home/kurt/dev/ipercron-compose/furion/iclib', ('', '', 5))

用方括号括起来os.getcwd(),该函数返回预期输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python的imp中,“ImportError:没有名为...的冻结子模块” 的相关文章

随机推荐