【问题标题】:Is it possible to reload a python module as something?是否可以重新加载 python 模块?
【发布时间】:2014-06-16 16:47:26
【问题描述】:

在解释器中乱来,虽然我知道这是不可能的,但能够按照reload(foo) as f 的方式做一些事情对我来说会很有用。就像我做import foo as f一样,有办法吗?

使用 Python 2.6

谢谢!

【问题讨论】:

  • 你可以重新分配; f = foo.
  • 我不能相信我的愚蠢...谢谢。
  • 重载时如何处理别名不是傻问题!
  • 如果你只是想重新加载一个特定的函数,比如:from lib import foo你如何重新加载那个函数?

标签: python reload interpreter


【解决方案1】:

如果您首先导入为import foo as f,则重新加载调用可以是reload(f)

【讨论】:

    【解决方案2】:

    Python 3 答案

    正如其他人所说,只需使用您用作别名的名称重新加载即可。但是,由于 imp 在 Python 3 中已弃用,您现在应该使用 importlib 执行此操作。假设您的原始导入使用了如下别名:

    import fullLibName as aliasName

    然后重新加载别名:

    importlib.reload(aliasName)
    

    或者(更标准的用法):

    from importlib import reload
    ...
    reload(aliasName)
    

    【讨论】:

      【解决方案3】:
      import foo
      f = reload(foo)
      

      如果我理解你的问题,这应该可行。

      如果您实际上不需要重新加载库,则可以按照 Martijn 的建议进行操作,然后重新分配 foo。

      f = foo
      

      【讨论】:

        【解决方案4】:

        imp module 为您提供了更多导入内部结构的权限,并且您可以导入任何源文件(即它不需要在路径中)。

        例如

        anyname = imp.load_source("SOME NAME", FILEPATH)
        

        【讨论】:

          猜你喜欢
          • 2011-05-06
          • 2021-03-25
          • 1970-01-01
          • 1970-01-01
          • 2011-08-27
          • 2010-12-20
          • 2011-09-10
          • 2021-11-08
          • 1970-01-01
          相关资源
          最近更新 更多