【问题标题】:python - import namespacepython - 导入命名空间
【发布时间】:2017-01-25 16:34:24
【问题描述】:

如果我有这样的库:

我的包裹:

  • __init__.py

  • 子包1

    • __init__.py
    • moduleA.py
    • 模块B.py
  • 子包2
    • __init__.py
    • moduleC.py
    • moduleD.py

但我希望用户可以像import MyPackage.moduleA 这样直接导入moduleA。我可以通过在MyPackage/__init__.py 中写一些规则来实现吗?

【问题讨论】:

    标签: python import namespaces package


    【解决方案1】:

    MyPackage/__init__.py 中,从子包中导入您想要的模块:

    from __future__ import absolute_import  # Python 3 import behaviour
    
    from .SubPackage1 import moduleA
    from .SubPackage2 import moduleD
    

    这使得moduleAmoduleDMyPackage 中成为全局变量。然后你可以使用:

    from MyPackage import moduleA
    

    这将绑定到同一个模块,或者做

    import MyPackage
    
    myPackage.moduleA
    

    直接访问该模块。

    但是,你不能使用

    from MyPackage.moduleA import somename
    

    因为这需要moduleA 直接存在于 MyPackage 中; __init__ 中的全局变量不会在那里剪切它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2012-06-01
      • 1970-01-01
      相关资源
      最近更新 更多