python的__init__.py文件在Python包被导入或使用时开始执行。
当一个包被导入时,Python会自动执行该包下的__init__.py文件。这意味着__init__.py文件中的代码会在导入包时立即执行。
如果我们的应用程序需要在引入包的时候,对__init__.py文件的变量设置不同的值,但是不想每次手动修改时,则可以这样操作
import pickle
import sysfile_path = 'data.pickle'DEFAULT_CFG_PATH_value = 'yolo/cfg/default_glue.yaml'with open(file_path, 'wb') as f:pickle.dump(DEFAULT_CFG_PATH_value, f)'''
import __init__ 所在的 package
'''if os.path.exists(file_path):os.remove(file_path)
原来的__init__.py文件
DEFAULT_CFG_PATH = ROOT / 'yolo/cfg/default.yaml'
修改为:
if os.path.exists('data.pickle'):import pickle# 从文件中加载变量with open('data.pickle', 'rb') as f:my_variable = pickle.load(f)DEFAULT_CFG_PATH = ROOT / my_variable
else:DEFAULT_CFG_PATH = ROOT / 'yolo/cfg/default.yaml'