pycharm使用疑问:在终端里可以成功运行程序,在pycharm中却报错

这两天在学习flask文件上传的内容。网上找到一个教程。自己敲了一遍打算实现一下。但是却发现在pycharm中运行报错,显示有一个扩展包没有。但是我明明下了那个扩展包,之后在终端中运行程序却发现可以成功。
期间我尝试直接复制粘贴教程的代码却还是同样的问题。扩展包的下载都是在pycharm中完成的。
相关代码:
upload.py

import os
from flask import Flask, render_template
from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_class
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileRequired, FileAllowed
from wtforms import SubmitField

app = Flask(__name__)
app.config['SECRET_KEY'] = 'I have a dream'
app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd()

photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)
patch_request_class(app)  # set maximum file size, default is 16MB


class UploadForm(FlaskForm):
    photo = FileField(validators=[FileAllowed(photos, u'Image only!'), FileRequired(u'File was empty!')])
    submit = SubmitField(u'Upload')


@app.route('/', methods=['GET', 'POST'])
def upload_file():
    form = UploadForm()
    if form.validate_on_submit():
        filename = photos.save(form.photo.data)
        file_url = photos.url(filename)
    else:
        file_url = None
    return render_template('index.html', form=form, file_url=file_url)


if __name__ == '__main__':
    app.run()

index.html

<!DOCTYPE html>
<title>Upload File</title>
<h1>Photo Upload</h1>
<form method="POST" enctype="multipart/form-data">
     {{ form.hidden_tag() }}
     {{ form.photo }}
     {% for error in form.photo.errors %}
         <span style="color: red;">{{ error }}</span>
     {% endfor %}
     {{ form.submit }}
</form>

{% if file_url %}
<br>
<img src="{{ file_url }}">
{% endif %}
Raw

pychar运行结果:
图片描述
终端运行结果:
图片描述

代码运行成功网页:
图片描述

是不是pycharm有什么相关设置要改??? 求指导!!!

阅读 20.3k
3 个回答

是 pycharm 找不到 flask_uploads.

0.确保 flask_uploads 存在,在 setting 中设置项目的解释器和运行环境。
1.在pycharm目录树合适的文件夹上右键,Mark Directory as - Source Root
2.试着改写一下 import 语句。

新手上路,请多包涵

在 PyCharm 里用了正确的 virtualenv 吗?

我之前遇到的和你是同样的问题,代码是一样的,pycharm就报错,但是考出来在终端里就可以运行,没有错。我就把两段代码考出来放到txt中对比,结果发现它们长度不一样,然后发现是空格的问题,你调整一下pycharm中的空格,换行之类的试一下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题