如何从自身重新加载python模块?

Bru*_*elb 8 python

我有一个包含很多变量的 python 模块。许多其他模块使用和更改这些变量。我想在它发生时从它自身重新加载这个模块(为了刷新)。

怎么做?

更新:所以.. 这是我,问题作者,问题发布日期后 8 年。我完全不知道为什么我会尝试做那样的事情。

如果您阅读本文,请尝试使用适当的配置管理技术(大部分时间由您的框架提供)。

# ==================================
# foo.py

spam = 100

def set_spam(value):
    spam = value
    foo = reload(foo) # reload module from itself

# ==================================
# bar.py

import foo
print foo.spam # I expect 100
# assume that value changes here from some another modules (for example, from eggs.py, apple.py and fruit.py)
foo.set_spam(200)
print foo.spam # I expect 200
Run Code Online (Sandbox Code Playgroud)

Ale*_*yev 0

这个操作根本没有意义。来自Python文档

reload(module):重新加载之前导入的模块。参数必须是模块对象,因此它之前必须已成功导入。

因此,reload只能从之前执行的其他模块的上下文中理解import

  • 好吧,它在全局的“sys.modules”中,所以它并不像听起来那么荒谬。仍然... (5认同)