更新:建议 OP 进一步深入研究烧瓶与烧瓶上传的变化,这引入了本故障排除帮助/文档末尾指出的不兼容性。如果 OP 好心问他们,也许包的维护者甚至可以提供答案?当提供更多详细信息时,我提议将其更新为解决方案,但现在他们似乎错过了......
**回答[等待] **
我想你错过了一个点。尝试:
from flask.ext.uploads import UploadSet, configure_uploads, IMAGES
代替:
from flaskext.uploads import UploadSet, configure_uploads, IMAGES
如果仍未找到该模块,则检查 sys.path 并检查已安装的模块是否位于访问过的位置之一。像这样:
>> import sys
>>> sys.path
['', '/usr/local/some/python', '/usr/local/lib/python2.7/site-packages']
Empty 是当前工作目录,其余是文件夹路径,如果您知道安装存储模块的位置,/usr/local/lib/python2.7/site-packages/flask_uploads.py
我们知道它会找到它。
那么如果你遇到:
>>> import flask_uploads
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/flask_uploads.py", line 24, in <module>
from flask import current_app, Module, send_from_directory, abort, url_for
ImportError: cannot import name Module
它告诉你,在flask_uploads.py
安装包中,你不能Module
从flask
.
所以:
>>> import flask
>>> dir(flask)
['Blueprint', 'Config', 'Flask', 'Markup', 'Request', 'Response', 'Session', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_app_ctx_stack', '_compat', '_request_ctx_stack', 'abort', 'after_this_request', 'app', 'appcontext_popped', 'appcontext_pushed', 'appcontext_tearing_down', 'before_render_template', 'blueprints', 'cli', 'config', 'copy_current_request_context', 'ctx', 'current_app', 'escape', 'flash', 'g', 'get_flashed_messages', 'get_template_attribute', 'globals', 'got_request_exception', 'has_app_context', 'has_request_context', 'helpers', 'json', 'json_available', 'jsonify', 'make_response', 'message_flashed', 'redirect', 'render_template', 'render_template_string', 'request', 'request_finished', 'request_started', 'request_tearing_down', 'safe_join', 'send_file', 'send_from_directory', 'session', 'sessions', 'signals', 'signals_available', 'stream_with_context', 'template_rendered', 'templating', 'url_for', 'wrappers']
嗯......看起来不太有希望,但是当这个导入在烧瓶上传中中断时,应该显示某人或某个地方的更改文档。