我正在尝试编写一个脚本,在目录中搜索具有给定名称的模块。我想使用Python imp的find_module
方法。但是,我不太明白为什么以下不起作用。我在一个包含模块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
为什么这不起作用?
答案 0 :(得分:7)
在issue on bugs.python.org之后,path
参数需要嵌入到列表中:
In [4]: imp.find_module('iclib',[os.getcwd()])
Out[4]: (None, '/home/kurt/dev/ipercron-compose/furion/iclib', ('', '', 5))
在os.getcwd()
周围使用方括号,该函数返回预期的输出。