【问题标题】:Importing package only when main is run in python package仅在 python 包中运行 main 时导入包
【发布时间】:2012-10-16 11:16:38
【问题描述】:

我喜欢在我的包底部使用以下代码在 python 中测试我的包:

if __name__ == "__main__":
    sys.exit(main())

main() 是我在上面定义的函数。现在我的问题是:

我需要在我的 main 中导入额外的包来测试我的模块,如果用户只是导入我的模块(即从另一个脚本),则不需要导入这些包。如果我的 main 明确运行,有没有办法只导入这些额外的包?当我的包刚被导入(即从另一个脚本)时,这些额外的包不会被导入。

【问题讨论】:

  • 不导入包的目的是什么?
  • 可能 main 是唯一调用导入模块中函数的函数(并且这些模块的导入需要一段时间)
  • 您可以随时导入特定功能中的模块
  • 只需在 main() 函数中导入包

标签: python import packages main


【解决方案1】:

为什么不将导入语句直接放在main() 的正文中?应该这样做。

def main():
   import my_module # import ONLY if main is called
   # code

【讨论】:

  • 啊!谢谢 python 有意义:)
【解决方案2】:

在 Python 中,您可以在代码中的任何位置放置导入。

所以你可以:

if __name__ == "__main__":
    import <package> # place your imports here
    sys.exit(main())

“惰性导入”在this question中有详细讨论

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 2018-02-28
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多