Получение нулевого не определенная ошибка при попытке запустить колбу веб-приложение - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь создать веб-приложение, которое будет очищать CSV и возвращать графики в формате PDF.

Так как я новичок в создании веб-приложений и фляги в целом. Я пытаюсь начать с создания простого веб-приложения, которое позволяет пользователям загружать файлы в формате CSV. Однако, когда я пытаюсь запустить приложение на bash, я получаю следующее сообщение об ошибке:

(venv) bash-3.2$ python main.py
Traceback (most recent call last):
  File "main.py", line 5, in <module>
    "execution_count": null,
NameError: name 'null' is not defined

Вот код, который я использовал для создания веб-приложения, которое у меня есть. Я написал этот код в Jupyter, скачал его как файл .py и попытался запустить этот файл на bash

from pprint import pprint as pp
from flask import Flask, flash,redirect,render_template,request,url_for
from werkzeug.utils import secure_filename
upload_folder = '/path/to/the/uploads'
allowed_exts = set(['csv','pdf'])
app = Flask(__name__)
app.config['upload_folder'] = upload_folder
def allowed_f(file):
    return '.' in file and \
        file.rsplit('.',1)[1].lower() in allowed_exts
@app.route('/', methods = ['GET','POST'])
def upload():
    if request.method == 'POST':
        if 'file' not in request.files:
            flash('File part cannot be found')
            return redirect(request.url)
        file = request.files['file']
        if file.filename == '':
            flash('No file has been selected')
            return redirect(request.url)
        if file and allowed_f(file.filename):
            filename =  secure_filename(file.filename)
            file.save(os.path.join(app.config['upload_folder'],filename))
            return redirect(url_for('uploaded_file',filename=filename))
    return '''
    <!doctype html>
    <title>GMB Discovery Report builder/title>
    <h1>Upload GMB Discovery CSV</h1>
    <form method=post enctype=multipart/form-data>
    <input type=file name=file>
    <input type=submit value =Upload>
    </form>
    '''
from flask import send_from_directory
@app.route('/uploads/<filename>')
def uploaded_f(filename):
    return send_from_directory(app.config['upload_folder'],filename)
if __name__=='__main__':
    app.run(debug=True)

Не уверен, какая часть моего кода приводит к этому сообщению об ошибке.

Редактировать, запустив команду ipython main.py на dash, вернул это:

/Users/emmanuelsibanda/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py:763: UserWarning: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
  warn("Attempting to work in a virtualenv. If you encounter problems, please "
Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Если вы скачали файл Jupyter Notebook и сохранили его с расширением .py, он не только содержит этот скрипт - это лишь малая часть большей структуры .ipynb, в которую встроен скрипт. Создайте новый файл с именем main.py и скопируйте скрипт в этот файл вместо загрузки блокнота.

1 голос
/ 25 апреля 2019

Все, что вам нужно знать, прямо в сообщении об ошибке: в строке 5 вашего main.py модуля содержится "execution_count": null, что вызывает ошибку, потому что, очевидно, вы не определили переменную с именем null.Возможно, вы путаете его со встроенным None или подразумеваете использование строки "null" (обратите внимание на кавычки), что невозможно определить без кода.Ваш фрагмент выше должен быть чем-то другим, он не содержит проблемной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...