如何在内部模块中导入__init __的方法?

时间:2011-07-25 09:04:25

标签: python import

我的文件结构是

foo/
   __init__.py
   bar.py

file __init __。py

def abc():
    print 'ABC'

文件bar.py

from foo import abc

我收到了这个错误。

Traceback (most recent call last):
   File "foo/bar.py", line 1, in <module>
   from foo import abc
ImportError: No module named foo

3 个答案:

答案 0 :(得分:4)

像这样导入foo应该有效,但是你需要确保foo上面的目录在Python路径上。您可以通过打印sys.path来检查路径上的内容。

如果您向我们提供有关如何运行代码的更多详细信息,包括对错误的完整回溯,我可以提供更多帮助,但基本建议是检查Python路径是否正确。

答案 1 :(得分:4)

使用相对导入(需要Python 2.6或更高版本):

from . import abc

答案 2 :(得分:1)

导入包时,Python会搜索sys.path上的目录,查找package子目录。这意味着foo必须是sys.path列表中某个目录的子目录。由于bar.py本身位于foo目录中,因此可以实现的一种方法是将其父文件夹添加到sys.path这样(假设foo是当前的工作目录执行时):

import sys
sys.path.append('..')  # add parent folder

from foo import abc