如何在flask中重新加载python模块?
我有一个名为如何在flask中重新加载python模块?,python,flask,Python,Flask,我有一个名为mapping.py的文件,它有一个字典methodMapping。在我的web应用程序中,一个键值对被添加到methodMapping字典中。在我将其附加到mapping.py之后,调用了reload(mapping),并重新加载文件(我通过在文件顶部打印一条消息进行了检查),但当我尝试访问键值对时,会引发KeyError 原始mapping.py文件: print('mapping.py loaded) methodMapping = {} methodMapping['ke
mapping.py
的文件,它有一个字典methodMapping
。在我的web应用程序中,一个键值对被添加到methodMapping字典中。在我将其附加到mapping.py
之后,调用了reload(mapping)
,并重新加载文件(我通过在文件顶部打印一条消息进行了检查),但当我尝试访问键值对时,会引发KeyError
原始mapping.py文件:
print('mapping.py loaded) methodMapping = {}
methodMapping['key1'] = 'value1'
以下是如何将键值对附加到文件中:
from mapping import methodMapping
@app.route('/append', methods=['POST'])
def append():
key = request.form.get('key')
value = request.form.get('value')
value = value.encode('ascii', 'ignore')
f = open('mapping.py', 'a')
f.write('methodMapping["'+key+'"] = '+value)
f.write("\n\n")
f.close()
reload(mapping)
return ....
添加键值后,mapping.py如下所示:
print('mapping.py loaded')
methodMapping = {}
methodMapping['key1'] = 'value1'
methodMapping['key2'] = 'value2'
但是,当我尝试从flaskServer.py访问methodMapping['key2']
时,会引发KeyError
异常。当我重新启动服务器时,它能够找到methodMapping['key2']
注意:我已经检查过这个,也尝试了app.run(debug=True,port=8000)
,但这对于我的应用程序是不可能的,因为我正在使用keras和Tensorflow后端,设置debug=True将加载它两次,并导致值错误:Tensor Tensor(…)不是图表的一部分错误
如有任何意见或建议,我们将不胜感激。谢谢。问题在于导入映射的方式。如果希望reload(mapping)
工作,则需要使用import mapping
而不是from mapping import…
如果你找到了答案,你应该把它写在答案里,而不是评论里 我找到了解决办法:问题来自我导入映射的方式。如果我想reload(mapping)
工作,我需要使用import mapping
而不是from mapping import…
谢谢你的评论-我会检查你的答案:)另外,我还有一个问题,在reload()之后,我无法使用pickle,因为,根据这一点,pickle需要采用映射导入中的格式…
。你可能知道答案吗?根据这个答案,你每次只需要以相同的方式导入东西,而不是特定的方式。