2016-12-29 7 views
0

私は、フラスコとpython2.7で実行しているアプリケーションをスタンドアロンのソリューションからapacheとmod_wsgiのフラスコに変更しました。Flask with mod_wsgi - 私のモジュールを呼び出せません

My Flaskアプリ(app.py)には、私のappディレクトリ(../)の下にあるディレクトリにいくつかのクラスが含まれています。ここで

は私app.wsgiです:

 

    #!/usr/bin/python 
    import sys 
    import logging 
    logging.basicConfig(stream=sys.stderr) 
    sys.stdout = sys.stderr 


    project_home = '/opt/appdir/Application/myapp' 
    project_web = '/opt/appdir/Application/myapp/web' 


    if project_home not in sys.path: 
     sys.path = [project_home] + sys.path 

    if project_web not in sys.path: 
     sys.path = [project_web] + sys.path 

    from app import app 
    application = app 

私の設定前にapp.pyで私の主な通話をmod_wsgiのためにそのようになっています。私は私のクラスをロードするために完璧にできた

 

    # Main 
    if __name__ == '__main__' : 
     from os import sys, path 
     sys.path.append(path.dirname(path.dirname(path.abspath(__file__)))) 
     from logger import Logger 
     from main import Main 
     from configReader import ConfigReader 
     print "Calling flask" 
     from threadhandler import ThreadHandler 
     ca = ConfigReader() 
     app.run(host="0.0.0.0", threaded=True) 

以下のディレクトリにあります。 のmod_wsgiでアプリを実行した後、私は次のエラーを取得:

 

    @app.route("/") 
    def test(): 
     main = Main("test") 
     return main.responseMessage() 

: グローバル名\「メイン\」は

が定義されていないので、どのように私はここにこれが働くだろうと私のアプリを変更する必要がありますご回答いただきありがとうございます。

敬具 Joern

+0

あなたは '輸入アプリのWSGIをMain'inしようとしたことがありますか? – saitam

+0

あなたのスクリプトがメインスクリプトとして実行されないので、この '' __main__''チェックの下ではmod_wsgiの下では何も実行されません。 '' sys.path''を設定するものは、 '' app.wsgi''またはmod_wsgiのためのApache設定の中で行わなければなりません。モジュールのインポートなど、モジュールを必要とするコードファイルの先頭で常に実行する必要があります。 –

答えて

0

私の要求を応答していただきありがとうございます。 mod_wsgiの主な関数呼び出しは正解ではありませんでした。私は必要なモジュールをwsgiファイルの に実装していませんが、フラスコの上部にあります。私のためにうまくいく;)

ありがとう、あなたのための新年。

お祈り申し上げます Joern

関連する問題