официантка-подача -вызов ‘helloweb: app’, дающий исключение модуля

#python #flask #waitress

#python #колба #официантка

Вопрос:

Я не эксперт в python. Я пытаюсь создать образец веб-приложения, и я мог бы запустить его с помощью flask. Однако после его упаковки и попытки установить его с помощью waitress я получаю сообщение об ошибке —

Модуль не назван helloweb.py (это мое веб-приложение). Я не уверен, как устранить эту проблему. Любые указатели были бы великолепны. Все остальные ответы на stack overflow мне не очень помогли.

Вот мое веб-приложение —

helloweb.py —

 import datetime
from flask import Flask
from flask_api import status
import json


app = Flask(__name__)



@app.route('/')
def hello_world():
    return 'Hello!'

@app.route('/xyz')
def display_status():
    healthstatus=json.dumps({'status': status.HTTP_200_OK})
    return healthstatus
  

Я попробовал следующее, и это сработало —

 FLASK_APP=helloweb.py
FLASK_RUN_PORT=8080

flask run
  

Но попытка перенести его на рабочий сервер WSGI waitress у меня не работает. Я сделал следующее, создал setup.py файл —

 import setuptools
from setuptools import setup

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="mydomain-webapp-myusername", # Replace with your own username
    version="0.0.1",
    author="first.last",
    author_email="someone@gmail.com",
    description="A small flask package",
    long_description="This is a web app",
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
)
  

и я создал ЛИЦЕНЗИЮ, README.md файл, инициализирующий файл.py,waitress_server.py файл в той же папке, что и исходный файл (helloweb.py ). Я не уверен, почему я вижу следующую ошибку при запуске —

 $ waitress-serve --call 'helloweb:app'

Error: Bad module 'helloweb'

Usage:

    waitress-serve [OPTS] MODULE:OBJECT
.........
........
..........
There was an exception (ImportError) importing your module.

It had these arguments: 
1. No module named flask_api
  

Я могу импортировать flask_api в оболочку python, а также helloweb.py , поэтому я не уверен, как это исправить. Как мне устранить эту ошибку?

Комментарии:

1. Что вы ожидаете from flask_api сделать?

2. Я использую этот модуль для отображения кода состояния HTTP.

3. Конечно. Однако, согласно ошибке, этот модуль недоступен

4. Да, именно поэтому я упомянул, что могу импортировать модуль в оболочку python в той же среде. Смотрите результат ниже — myprompt $ python Python 3.8.5 (v3.8.5:580fbb018f, июль 20 2020, 12:11:27) [ Clang 6.0 (clang-600.0.57)] в darwin введите «справка», «авторское право», «кредиты» или «лицензия» для получения дополнительной информации. >>> импортировать flask_api >>>

5. @Onecricket, спасибо за помощь, я решил обе проблемы — вместо использования waitress я использую gunicorn, а для flask API мне нужно было изменить переменную PATH, чтобы указывать на пакеты сайтов python.