2017-03-06 4 views
1

methodMapping이라는 사전이있는 mapping.py이라는 파일이 있습니다. 내 웹 응용 프로그램에서 키 - 값 쌍이 methodMapping 사전에 추가됩니다. mapping.py에 첨부 한 후 reload(mapping)이 호출되고 파일이 다시로드됩니다 (파일 상단에 메시지를 인쇄하여 선택 했음). 그러나 키 - 값 쌍에 액세스하려고 시도하면 KeyError이 발생합니다.플라스크에서 파이썬 모듈을 다시로드하는 방법은 무엇입니까?

원래 mapping.py 파일 : mapping.py 보이는 첨가

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 .... 

키 값 후 여기

print('mapping.py loaded) methodMapping = {} 
methodMapping['key1'] = 'value1' 

는 키 - 값 쌍은 파일에 추가하는 방법이다 이 같은 :

그러나
print('mapping.py loaded') 
methodMapping = {} 
methodMapping['key1'] = 'value1' 
methodMapping['key2'] = 'value2' 

, 내가 flaskServer.py에서 methodMapping['key2']에 액세스하려고 KeyError 예외가 발생합니다. 서버를 다시 시작하면 methodMapping['key2']을 찾을 수 있습니다.

참고 : 이미이 linkapp.run(debug=True, port=8000) 시도 확인했다,하지만 난 Tensorflow 백엔드 keras을 사용하고 두 번로드 = 진정한 디버그 설정 및 ValueError: Tensor tensor(...) is not part of the graph 오류

에 이르게하고 있습니다 때문에 내 응용 프로그램에 대한 수 없습니다

의견이나 제안을 크게 부탁드립니다. 고맙습니다.

+0

해결책을 찾았습니다. 문제는 매핑을 가져온 방법 때문이었습니다. 'reload (mapping)'을 사용하려면'from import import ... '대신에'import mapping'을 사용해야합니다. – matchifang

답변

2

문제는 매핑을 가져 오는 방법입니다. reload(mapping)을 사용하려면 from mapping import... 대신 import mapping을 사용해야합니다.

답변을 찾으면 댓글 대신 답변에 넣어야합니다. ;)

+0

주석 주셔서 감사합니다 - 나는 당신의 답변을 다음으로 확인합니다 :) 또한, reload() 이후에 또 다른 문제가 있습니다. 피클을 사용할 수 없기 때문에, http://stackoverflow.com/questions/1412787/picklingerror-cant-pickle-class-decimal-decimal-its-not 같은 피사체가 피클을 작동시키기 위해'from import import ... '형태로 있어야합니다. 당신은 그 해답을 알고 있습니까? – matchifang

+0

그 대답에 따르면 당신은 단지 매번 동일한 방법으로, 특정한 방법으로 물건을 가져와야합니다. – pjz

관련 문제