从包中的另一个目录导入功能

时间:2020-05-01 11:50:36

标签: python python-import importerror

我正在使用Python3.8中的以下目录:

package/
    __init__.py
    /folder1
       __init__.py
       file1.py
       /folder2
          __init__.py
          file2.py
    /folder3
       __init__.py
       file3.py

我想将一个功能从file3导入到file2中。最简单的方法是什么?我还想避免手动附加到PYTHONPATH,以使下一个拉项目的人尽可能平滑。

到目前为止,尝试了相对导入,该导入不起作用,可能是因为我没有在init中指定某些内容,该内容当前为空。我正在使用的错误:

from ..package.folder3.file3 import function_name

ImportError: attempted relative import with no known parent package

感谢所有帮助!

1 个答案:

答案 0 :(得分:1)

问题的答案非常简单,您需要将package路径添加到系统路径。

这是一个完整的示例:

  • file3.py中,我们创建一个简单的函数
    def func():
        print("Hello from file3")
    
  • file2.py中,我们可以像这样导入func函数:

    import os
    import sys
    sys.path.append(os.path.abspath('../../..'))
    
    # import func now from file3
    from package.folder3.file3 import func
    
    func() #should return "Hello from file3"
    

希望这能回答您的问题!