我有一个名为 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.pyimport pkg1
pkg1.SPECIAL_DIRS["OPT_DIR2"] = "/path/somewhere/else"
而不是在 main.py 中导入它并获得所需的结果。
但我想知道是否有更好的解决方案,可以在其他代码中导入文件。