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

Python模块搜索路径

  •  3
  • Scharron  · 技术社区  · 14 年前

    我有一个这样的项目:

    foo/
    | main.py
    | bar/
    | | module1.py
    | | module2.py
    | | __init__.py
    

    具有 main.py import bar.module1 module1.py import module2 .

    ImportError: No module named module2

    为什么行为会改变?如何恢复?

    1 回复  |  直到 14 年前
        1
  •  6
  •   Nick T twasbrillig    14 年前

    在module1.py中,执行以下操作: from . import module2

    import bar.module1
    print(bar.module1.module2.thing)
    

    酒吧/ 初始化 .py公司

    #
    

    杆/模块1.py

    #import module2 # fails in python31
    from . import module2 # intrapackage reference, works in python26 and python31
    

    棒/模2.py

    thing = "blah"
    

    至于原因/方法,那比我的工资级别高。文件似乎没有阐明这一点。也许在python3中,他们决定强制使用intrapackage样式显式导入包中的子模块?