按用户提供的文件中的值更改导入的值

时间:2016-07-21 17:47:31

标签: python python-2.7

我有一个名为 pgk1 的软件包。它是 __ init __。py 包含

from defaults.py import *

defaults.py 包含标量,列表,词典的定义,即

CONSTANT = "C1"
SPECIAL_DIRS = {"OPT_DIR1": "/path/to/dir1", "OPT_DIR2": "/path/to/dir2"}`

main.py 包含

import pkg1
print pkg1.SPECIAL_DIRS["OPT_DIR1"]

我希望用户能够通过在表单中​​添加python user.py 文件来覆盖部分或全部默认常量值

SPECIAL_DIRS["OPT_DIR2"] = "/path/somewhere/else"

我的问题是,如何通过 user.py 中的值动态覆盖 defaults.py 中的值,以便将它们视为包常量,即

print pkg1.SPECIAL_DIRS["OPT_DIR2"]

会产生

/path/somewhere/else

文件 defaults.py 可以包含任何基本的python类型,用户可能只想修改现有dict中的一个键。

我可以在表单

中准备 user.py
import pkg1
pkg1.SPECIAL_DIRS["OPT_DIR2"] = "/path/somewhere/else"

而不是在 main.py 中导入它并获得所需的结果。

但我想知道是否有更好的解决方案,可以在其他代码中导入文件。

0 个答案:

没有答案