Как вы компилируете приложение фляги с Cython?

1

У меня есть приложение Python flask, которое мне нужно скомпилировать с помощью cython. Следуя этому руководству, я могу скомпилировать простое приложение python, но когда я делаю то же самое для простого флеш-приложения:

#!/usr/bin/env python2

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "hello"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8000)

Кажется, он компилируется отлично, но когда я пытаюсь запустить его, я получаю следующее:

Traceback (most recent call last):
  File "./run.py", line 3, in <module>
    from app import main
ImportError: cannot import name main

Когда я пытаюсь запустить main.py.

Мой файл compile.py выглядит так:

#!/usr/bin/env python2

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [ 
    Extension("app",  ["app.py"]),
]
setup(
    name = 'My Test Website',
    cmdclass = {'build_ext': build_ext},
    ext_modules = ext_modules
)

Мой main.py выглядит так:

#!/usr/bin/env python2

from app import main
main()

Использует ли колбу некоторые функции, которые невозможно скомпилировать? Или я делаю это неправильно?

Теги:
flask
cython

1 ответ

2
Лучший ответ

Вы не определили функцию main() в app.py, поэтому from app import main ошибки from app import main да.

Вы можете просто импортировать объект Flask app и вызвать метод run():

from app import app

app.run(host='0.0.0.0', port=8000)

Не то, чтобы вы использовали это в производственных развертываниях. Вместо этого вы должны подготовить готовый WSGI сервер для использования объекта app модуле app в качестве app WSGI. См. Документацию по развертыванию Flask.

  • 0
    Когда я имел дело с простым приложением на языке Python, которое не являлось флешкой, я также не определил функцию main (), и она работала с Cython. Появился Cython для автоматической генерации функции main (). Это не с колбой. Думаю, здесь все по-другому. Спасибо
  • 0
    Теперь я сталкиваюсь с ошибками "не принимает аргументов по ключевым словам". Чтобы исправить это, по-видимому, мне нужно установить Always_allow_keywords в True, но я не уверен, где это сделать в моем compile.py. Кто-нибудь знает?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню