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

2024-10-03 06:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从werkzeug.utils导入secure_文件名,但它出现了一个错误。它在我的基础虚拟环境下运行良好

代码:

# 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,configure_uploads,IMAGES,DATA,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)

Tags: frompyimportflaskpackages错误utilsannotation
2条回答

除了上述建议的解决方案之外,您还可以使用维护良好的fork Flask-Reuploaded

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

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

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

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

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

Flask-Uploadsgithub回购来看,这似乎是fixed 12 months ago

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

编辑

正如@mattficke所指出的,PyPi版本已经过时,回购协议也没有更新版本。事实证明,您可以直接基于提交散列进行安装,因此最新(在撰写本文时):

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

相关问题 更多 >