werkzeug第一個坑

最近在買了一本關於TensorFlow 2.0的實戰編程書(走向TensorFlow 2.0深度學習應用編程快速入門),裏面是附帶源碼,書裏說的代碼都是驗證過的,對於一個初學者來說,從零開始搭建項目,確實是會遇到不同的坑。由於自己很久沒有寫過python代碼,而且電腦也是新的,python相關環境都沒有。首先需要裝好Anaconda,再安裝TensorFlow相關庫,再搞個開發工具pycharm,配置環境,一番折騰,終於可以把基本環境搞好。下一步就是導入書本里的源碼工程。

這次工程是“基於CNN的圖像識別”,代碼工程主要包含了訓練數據讀取、訓練模型保存、模型預測、以及Web界面,整體來說,工程雖小,但內容還是挺豐富的。導入工程,感覺沒什麼報錯,心裏一喜。直接運行主程序,也沒有報錯,打開web界面,上傳驗證。(注:下面的IP地址,我是修改過的,原來是app.run(host = '0.0.0.0', port = 8808,我懶得去配置自己的電腦host,就直接在代碼裏改成127.0.0.1。如果哪位網友也用相同的代碼,可能需要注意一下了)。

然後直接在瀏覽器打開上面的url“http://127.0.0.1:8008/ ”。

 

好像沒報錯,看到一絲希望。

根據界面提上,上傳一張圖片測試一下效果。選張dog圖片看看。

 

然後點擊“上傳”,而結果如下:

Internal Server Error

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

 

出現問題,只能想辦法解決,自己也是第一次搞python web的東西,沒什麼經驗。只能直接百度了,搜出來的結果,有說是flask的方法調用有問題,有得說flask版本不一樣。都嘗試了一下網上提到的解決方法,最後還是報錯。

最後在網上有看到說,打開調試模式,方便找錯。

app.run(host="127.0.0.1", port=8008, debug=False)

改成:

app.run(host="127.0.0.1", port=8008, debug=True)

 

最後再走一遍流程,然而還是報錯,然後自己詳細對比了一下只是把控制檯的錯誤日誌放到web到界面而已,看來自己真的被坑暈了,感覺上一步是多此一舉。。。

 

沒辦法,只能拿上面的報錯日誌在百度裏搜,在搜之前,上面這句報錯信息“AttributeError: module 'werkzeug' has no attribute 'secure_filename'”大概意思是werkzeug沒有secure_filename的屬性或者方法。我自己細想了一下,既然書裏說代碼作者都自己驗證過,代碼我沒動過它,那隻能說werkzeug的版本有問題,但代碼裏又沒有說用了哪個版本,先搞個最新的版本,還是提示這個錯誤。最後在網上搜了一下,找到以下解決方案。

導入以下庫:

from werkzeug.utils import secure_filename

 

把原來的代碼修改一下。

secure_filename = werkzeug.secure_filename(img_file.filename)

改成

secure_filename = secure_filename(img_file.filename)

 

再跑一次流程試試。

 

出現上圖,則表明,代碼工程正常跑起來了。

 

從這次坑來說,可能對一些經驗豐富開發者來說,可能會覺得搞笑,自己不會範這些錯,或者能很快解決問題。確實,但我們很多時候都是從零開始學起,在前期總是會遇到各種問題的坑,自己只能多記錄一下,與大家一起分享一下,能幫到一個算一個。。。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章