2016-09-28 79 views
-1

在其中包含一个单一功能的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文件来测试主函数。 继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 

我不明白我在做什么错。任何帮助?谢谢

回答

0

答案是在我发布在我的问题中的链接中接受的答案的评论。从哪个目录执行python命令很重要。该代码在执行以下shell命令时起作用:

python -m top.project.program 

仅限于top目录。从其子目录project执行时,它不起作用。

0

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

+0

你能举个例子吗? – diegus

+0

尝试完整路径。它给了我ValueError:尝试在非包中的相对导入 – diegus