微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从“werkzeug”导入名称“secure_filename”

如何解决无法从“werkzeug”导入名称“secure_filename”

我正在尝试从 werkzeug.utils 导入 secure_filename 并且出现错误。它在我的基本虚拟环境下运行良好。

代码

# Flask packages
from flask import Flask,render_template,request,session,redirect,flash,send_file
from flask_bootstrap import Bootstrap 
from flask_uploads import UploadSet,configure_uploads,IMAGES,DATA,ALL

# Systems
import os 
import sys
import json
from werkzeug.utils import secure_filename

错误

    (absa_annotation) C02QM3FSFVH3:ABSA-annotation-tool kwunkeilau$ python3 app.py 
Traceback (most recent call last):
  File "app.py",line 4,in <module>
    from flask_uploads import UploadSet,ALL
  File "/Users/kwunkeilau/anaconda3/envs/absa_annotation/lib/python3.7/site-packages/flask_uploads.py",line 26,in <module>
    from werkzeug import secure_filename,FileStorage
ImportError: cannot import name 'secure_filename' from 'werkzeug' (/Users/kwunkeilau/anaconda3/envs/absa_annotation/lib/python3.7/site-packages/werkzeug/__init__.py)

解决方法

该异常看起来像 Flask-Uploads 正在尝试 from werkzeug import secure_filename,根据您自己的代码,它应该是 from werkzeug.utils import secure_filename

通过 Flask-Uploads github 存储库,这似乎是 fixed 12 months ago

我会在您的虚拟环境中尝试 pip install -U flask-uploads,以确保最新版本。

编辑

正如@mattficke 指出的那样,PyPi 版本已经过时,并且 repo 上没有更新的版本。事实证明,您可以根据提交哈希直接安装,因此对于最新版本(在撰写本文时):

pip install git+https://github.com/maxcountryman/flask-uploads.git@f66d7dc

或在 requirements.txt 中:

git+https://github.com/maxcountryman/flask-uploads.git@f66d7dc

然后pip install -r requirements.txt

有什么神奇之处:

>>> from flask_uploads import UploadSet,configure_uploads,IMAGES,DATA,ALL
>>> # No Exception
,

作为上述建议的解决方案的替代方案,您可以使用维护良好的叉子 Flask-Reuploaded

您甚至不必更改 import 语句,因为它会尝试与不再维护良好的 Flask-Uploads 保持兼容。

https://github.com/jugmac00/flask-reuploaded

此外,Flask-Reuploaded 当然在 PyPI 上提供了最新的软件包:

https://pypi.org/project/Flask-Reuploaded/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。