0
点赞
收藏
分享

微信扫一扫

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。如果哪位网友也用相同的代码,可能需要注意一下了)。

werkzeug第一个坑_python

然后直接在浏览器打开上面的url“http://127.0.0.1:8008/ ”。

werkzeug第一个坑_python_02

 

好像没报错,看到一丝希望。

根据界面提上,上传一张图片测试一下效果。选张dog图片看看。

werkzeug第一个坑_python_03

 

然后点击“上传”,而结果如下:

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.

 

werkzeug第一个坑_python_04

出现问题,只能想办法解决,自己也是第一次搞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到界面而已,看来自己真的被坑晕了,感觉上一步是多此一举。。。

werkzeug第一个坑_tensorflow_05

 

没办法,只能拿上面的报错日志在百度里搜,在搜之前,上面这句报错信息“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)

 

再跑一次流程试试。

werkzeug第一个坑_人工智能_06

 

出现上图,则表明,代码工程正常跑起来了。

 

从这次坑来说,可能对一些经验丰富开发者来说,可能会觉得搞笑,自己不会范这些错,或者能很快解决问题。确实,但我们很多时候都是从零开始学起,在前期总是会遇到各种问题的坑,自己只能多记录一下,与大家一起分享一下,能帮到一个算一个。。。

 

 

 

举报

相关推荐

0 条评论