Python从子目录导入

2024-04-18 17:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我的文件设置如下:

  • 主要/主.py你知道吗
  • 主/副/foo.py公司你知道吗
  • 主/副/棒.py你知道吗

main有import sub.foo,foo有import sub.bar

python main工作正常。但是python sub\foo不起作用,它不能识别import sub.bar中的sub。我希望能够自己运行mainfoo,如何在python3.4.1中正确地执行此操作?你知道吗

编辑: 如果我将foo改为import bar,那么python main表示它无法识别import sub.foo中的bar


Tags: 文件pyimport编辑foomainbar公司
2条回答

当您运行python main.py时,它可以工作,因为输入脚本的目录在main/目录中,因此所有模块都是相对于该目录找到的。你知道吗

直接运行foo.py时,相对于foo.py的目录,没有名为sub的子目录。你知道吗

一种解决方法是import bar,因为它与foo位于同一目录中。但是,如果foo.pybar.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

您可以使用uuuuinit\uuuuuuuy.py(不带空格)

例如,在“main/主.py“仅使用:

#main.py    
import sub

创建一个新文件,路径为“main/sub/\ init\ uuy.py”

#__init__.py
import foo
import bar

相关问题 更多 >