我的文件设置如下:
main有import sub.foo
,foo有import sub.bar
python main
运行正常。但是python sub\foo
不起作用,它无法识别sub
中的import sub.bar
。我希望能够自己运行main
以及foo
,我怎样才能在python3.4.1中正确运行?
编辑:
如果我将foo更改为import bar
,则python main
表示它无法识别import sub.foo
中的栏
答案 0 :(得分:1)
运行python main.py
时,它可以工作,因为输入脚本的目录位于main/
目录中,因此找到了相对于该目录的所有模块。
直接运行foo.py
时,相对于sub
目录,没有名为foo.py
的子目录。
一种解决方法是import bar
,因为它与foo位于同一目录中。但是,如果foo.py
和bar.py
位于不同的目录中,则会失败。
如果要直接运行foo.py
,请尝试将main/
目录添加到模块搜索路径中。例如,在foo.py
:
# foo.py
import sys
import os
if __name__ == '__main__':
foo_dir = os.path.dirname(os.path.realpath(__file__))
parent_dir = os.path.dirname(foo_dir)
sys.path.append(parent_dir)
import bar
答案 1 :(得分:0)
您可以使用__ init__.py(不含空格)
例如,在“main / main.py”上仅使用:
#main.py
import sub
使用此路径“main / sub / __ init __。py”
创建一个新文件#__init__.py
import foo
import bar