繁体   English   中英

找不到存在的模块

[英]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下有目录foobar 为什么imp.find_module无法找到我的包?

imp.find_module不处理imp.find_module名称。 文档中

此函数不处理分层模块名称(包含点的名称)。

它还指出了一个解决方案:

为了找到PM,即包P的子模块M,请使用find_module()和load_module()查找并加载包P,然后使用将path参数设置为P.__path__ find_module()。 当P本身具有点名时,请递归应用此配方。

  • 没有. 在文件夹名称中。
  • 确保foo&bar文件夹中没有__init__.py空文件。 这是python将其视为包所必需的
  • 确保foo文件夹所在的文件夹位于sys.path

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM