python - 如何导入模块(如果之前导入过则重新加载)

标签 python import module python-3.4

我有一个模块 my_module.py 包含:

var = 9

该模块是动态导入和修改的:

import importlib

def f(name):
    mod = importlib.import_module(name)
    importlib.reload(mod)
    return mod

print(f(name='my_module').var)  # Prints 9

# Changes var to 912
with open('my_module.py', 'a+') as opened:
    opened.write('12')

print(f(name='my_module').var)  # Prints 912

我的 f() 函数在确保重新加载后返回一个模块对象。

它有效,但我想知道是否有更好的方法来确保返回的模块对象始终重新加载。

最佳答案

您可以在通过 hashlib 重新加载之前计算并验证文件上的哈希值,或者仅使用修改日期作为库是否已更改的指示符。 或者,您可以在修改后发送信号,并使用信号处理程序执行实际的重新加载。 后者可能是最有效的,因为如果更改,库实际上只是重新加载。它甚至可以与哈希值结合起来以确保它实际上已被修改。

关于python - 如何导入模块(如果之前导入过则重新加载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565557/

相关文章:

haskell - 我可以抽象地导入非抽象类型吗?

python - Julia 符号和数字性能对比 Python

postgresql - Postgres 数据库转储不想在 Docker 容器中导入

java - 我可以删除任何隐式导入的 Java 库吗?

javascript - 从外部文件向 javascript 模块模式添加代码

javascript - 如何使用 "tumblr.js"NodeJS 模块将照片博客发布到 tumblr

Python ElementTree find() 使用通配符?

java - 在 mongoDB 中存储来自 twitter api 的 json 文件

python - 在postgres中逐行读取和存储csv数据

css - 如何在我网站上的 tumblr 帖子中导入我的 tumblr 的 css?