如何在烧瓶中重装python模块?

时间:2017-03-06 01:02:47

标签: python flask

我有一个名为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']

注意:我已经检查过这个link也尝试了app.run(debug=True, port=8000),但这对我的应用程序来说是不可能的,因为我正在使用带有Tensorflow后端的keras,并且设置debug = True将加载它两次并导致ValueError: Tensor tensor(...) is not part of the graph错误

非常感谢任何评论或建议。谢谢。

1 个答案:

答案 0 :(得分:2)

问题在于导入映射的方式。如果您希望reload(mapping)有效,则需要使用import mapping代替from mapping import...

如果你找到答案,你应该把它放在答案而不是评论中。 ;)