【问题标题】:python: reload module inside functionpython:在函数内重新加载模块
【发布时间】:2018-10-10 20:05:22
【问题描述】:

我在 python 中有一个配置文件,可以在主脚本运行时更改,所以我需要重新加载它。

我在这篇文章中尝试了答案: python refresh/reload

import config
from config import *
...
reload(config)
from config import *

它一直有效,直到我将重新加载部分输入到一个函数中,所以如果我这样做:

import config
from config import *

def main():
    reload(config)
    from config import *

我收到警告:“import *”只允许在模块级别,脚本正在运行但重新加载不起作用,

我也尝试了“import config”而不是“from config import *”,但出现异常“UnboundLocalError: local variable 'config' referenced before assignment”

【问题讨论】:

  • stackoverflow.com/a/33068321/6253693 似乎是在函数中重新加载的选项
  • 使用这样的模块作为配置文件不是一个好策略。在开发过程中,重新加载模块只是一种方便。您不应该在生产代码中执行此操作,因为很有可能并非所有内容都会因重新加载过程而改变。使用正确的配置文件。
  • 此外,在普通脚本中最好避免使用“星号”导入:它们会将一堆名称转储到您的命名空间中,从而无法区分本地名称和导入名称,并可能导致名称冲突,特别是如果您从多个模块进行星号导入。
  • 这不是一个大脚本,但我会记住这一点,谢谢

标签: python reload


【解决方案1】:

我建议您将配置存储在文件而不是模块中。请查看 Python 中的 ConfigParser 模块。据我所知,它也可以处理ini文件。

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 2019-04-28
    • 1970-01-01
    • 2012-10-19
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多