python:在模块中导入辅助函数

时间:2016-09-28 11:40:54

标签: python-2.7

top文件夹中,我有一个包含单个函数的python文件(helpers.py):

def play(name, verbose=False):
        if verbose:
        print name + "with verbose on"
    else:
        print name + "verbose off"

在名为project的子文件夹中,我有第二个python文件(program.py)导入并使用helpers.py:

from .. import helpers as hp

def main(device,verbose=False):
    hp.play(device)
    #here goes the code

if __name__ == "__main__":
    #Test the program
    main('Foo')
    main('Foo', verbose=True)

两个文件夹都包含允许模块导入的__init__.py文件。我想执行program.py文件来测试main函数。 在How to fix "Attempted relative import in non-package" even with __init__.py之后我尝试运行:

python -m top.project.program

获得

# /usr/bin/python: No module named top.project

我不明白我做错了什么。有帮助吗?感谢

2 个答案:

答案 0 :(得分:0)

-m并不表示导入;它期望您希望执行的模块的路径。所以它可能需要-m top/project/program.py(尽管您可能需要提供绝对路径)。

答案 1 :(得分:0)

答案在我在问题中发布的链接中对已接受答案的评论。从您执行python命令的目录来看,这很重要。执行以下shell命令时代码可以正常工作:

python -m top.project.program 

仅限top目录。从子目录project执行时无效。