PythonでFlaskアプリケーションを作成しましたが、これは配布用にexeに変えたいので、cx_freezeを使用しようとしています。Flaskアプリがcx_freezeでバンドルされた後にリクエスト時にハングアップ
私はPythonまたはPycharmからアプリケーションを実行すると完全に動作しますが、バンドルした後はすべての要求がハングアップします(クロムのスピン)。私はそれをデバッグしようとしただけで、1つのルートと他の依存関係のない新しいフラスコアプリを作成してしまい、同じことが起こります。
ここで私が作ったテストアプリ(testapp/app.py
)です:
from flask import Flask
# Create flask app
webapp = Flask(__name__)
@webapp.route('/')
def home():
print "home"
return 'hello there'
setup.py
はそれのために:私のエントリポイントとして機能します
from setuptools import find_packages
from cx_Freeze import setup, Executable
setup(
name='testapp',
description='Test Flask App',
packages=find_packages(),
include_package_data=True,
zip_safe=False,
install_requires=[
'Flask',
'waitress',
],
options={
"build_exe": {
"packages": [
"flask",
"waitress",
"threading",
"os",
],
'include_msvcr': True,
}
},
executables=[
Executable(
"run.py",
icon="icon.ico",
)
]
)
そしてrun.py
from testapp.app import webapp
import sys
import waitress
if __name__ == "__main__":
PORT = sys.argv[1] if len(sys.argv) > 1 else 8080
waitress.serve(webapp, port=PORT)
私は他にもいくつか質問がありますが、いつも終わりそうですテンプレートの問題ですが、このアプリはテンプレートを使用しておらず、どちらも私の本当のアプリです。私に
私は通常、それを実行すると、私は次の出力を取得し、ページが「こんにちは」と言う
Serving on http://Desktop-PC:8080
home
私はexeファイルとしてそれを実行すると、私は同じコンソール出力を得るが、ページがちょうどハングします。
私はflask==0.12
とcx-Freeze==5.0.1
私はこの1つをデバッグする方法上の任意のアイデアを使用していますか?
編集:
私は、ビルド時に、私は不足しているパッケージに関する警告の多くを得ることに気付きましたが、私は私のsetup.py
にそれらのパッケージを追加しようとした場合、cx_freezeはできないというエラーがスローされますそれらをインポートします。しかし、私はそれらをインポートすることはできませんし、私のアプリは明らかにそれらを必要とする場合、正常に実行する必要はありませんか?
リストは少し長いので、それはgist