代码之家  ›  专栏  ›  技术社区  ›  cjds

如何在Python2.7中使用命名空间包?

  •  0
  • cjds  · 技术社区  · 4 年前

    我知道我的文件夹结构与Python3和2兼容。不使用 __init__.py 我想访问子文件夹packges和 import 他们

    这是文件夹结构

    dir_1
       dir_2
          x.py
    dir_3
       dir_2
          y.py
    

    我正在努力

    from dir_1.dir_2.x import func_Z
    from dir_3.dir_2.y import func_Z2
    
    

    假设这些是文件中的函数 x.py y.py

    我试过将超级目录附加到 sys.path 但这没用,因为Python2.7不导入这些模块。

    我尝试了手工滚动导入的hacky版本,但是他们没有将其导入到正确的命名空间中

    for root, dirs, files in os.walk(start_dir):
         path = root.split(os.sep)
         for file in files:
             if file.endswith(".py"):
               sys.path.append(root)
               sys.modules[root.replace("/", ".")] = root.split(os.sep)[-1]
    
    0 回复  |  直到 4 年前