在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
我不明白我做错了什么。有帮助吗?感谢
答案 0 :(得分:0)
-m
并不表示导入;它期望您希望执行的模块的路径。所以它可能需要-m top/project/program.py
(尽管您可能需要提供绝对路径)。
答案 1 :(得分:0)
答案在我在问题中发布的链接中对已接受答案的评论。从您执行python命令的目录来看,这很重要。执行以下shell命令时代码可以正常工作:
python -m top.project.program
仅限top
目录。从子目录project
执行时无效。