我有一个 Python flask 应用程序,我需要使用 cython 进行编译。 正在关注this guide ,我可以编译一个简单的 python 应用程序,但是当我对一个简单的 flask 应用程序做同样的事情时:
#!/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是否使用了一些无法编译的特性?还是我做错了?
最佳答案
您没有在 app.py
中定义 main()
函数,所以 from app import main
失败了,是的。
您可以只导入 app
Flask 对象,然后调用 run()
方法:
from app import app
app.run(host='0.0.0.0', port=8000)
并不是说您应该在生产部署中使用它。相反,您可以指示生产就绪的 WSGI 服务器使用 app
模块中的 app
对象作为 WSGI 应用程序。查看Flask deployment documentation .
关于python - 你如何用cython编译一个 flask 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50932527/