[英]Can't find module that exists
从cli中,我通过python
进入python shell。
然后,我看一下导入搜索路径:
import sys
print '\n'.join(sys.path)
/path/to/a/package/foo.bar
/other paths...
所以我知道foo.bar
在我的python搜索路径中。
在python shell内继续:
import imp
imp.find_module('foo.bar')
ImportError: No module named foo.bar
嗯, sys.path
告诉我foo.bar
在python搜索路径上,但是imp
模块似乎找不到它。
在python shell内继续:
from foo.bar import baz
baz
<module 'foo.bar.baz' from '/path/to/a/package/foo.bar/foo/bar/baz.pyc'>
是的,我的主目录foo.bar
下有目录foo
和bar
。 为什么imp.find_module
无法找到我的包?
imp.find_module
不处理imp.find_module
名称。 从文档中 :
此函数不处理分层模块名称(包含点的名称)。
它还指出了一个解决方案:
为了找到PM,即包P的子模块M,请使用find_module()和load_module()查找并加载包P,然后使用将path参数设置为
P.__path__
find_module()。 当P本身具有点名时,请递归应用此配方。
.
在文件夹名称中。 __init__.py
空文件。 这是python将其视为包所必需的 sys.path
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.