2016-06-28 12 views
2

こんにちは私はフラスコについて学んでいます。私はそれをインストールするpipを使用しています。私はこの基本的なコードを実行すると、私はエラーが発生します。基本的に私はその作業が突然次のエラーで終了するのを見ています。これは環境問題のように見えますが、わかりません。先日これは奇妙なことでしたが、今はそうではありません。pythonフラスコで '__main__'モジュールが見つかりません

from flask import Flask 
app = Flask(__name__) 

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


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

* Running on http://0.0.0.0:8000/ (Press CTRL+C to quit) 
* Restarting with stat 
/Library/Frameworks/Python.framework/Versions/3.4/bin/python3: can't find '__main__' module in '' 
+1

あなたはディレクトリ構造とあなたがプログラムを起動するために使用するコマンドを表示してください。 – Wombatz

+0

コメントありがとうございます。私はPythonシェルに入り、コードをシェルに貼り付けていました。何らかの理由で私がそれをすると、私は自分の誤りにぶつかった。しかし、私はPython3のexample.pyを使ってプログラムを実行しています。なぜ私はシェルからこれを行うことができないのか分かりませんが、それは私の問題と思われました。 – bytes1234

+0

@ bytes1234シェルにコードを貼り付けることによってリモートで何かを実行すると、信頼性が低くなります – Suever

答えて

4

あなたは、対話型シェルからコードを実行するときにのみ問題が発生すると言いました。それはwerkzeug(wsgiサーバーflaskが基づいている)の機能によって引き起こされます。

werkzeugは、プロジェクトファイルが変更された場合に自動的にサーバーを再起動します。変更が検出されるたびに、werkzeugは、最初に起動したファイルを再起動します。最初の起動はのファイル名で実行されます。

しかし、対話型シェルではファイルが全くありません。werkzeugはファイルが""(空の文字列)と考えています。次に、そのファイルを実行しようとします。何らかの理由で""がパッケージを参照しているとも考えられます。しかし、そのパッケージは存在しないので、__main__モジュールを持つこともできないため、エラーになります。その後

app.run(debug=False, ...) 

それはする必要があります

あなたは(デフォルトでもある)Falseにデバッグを設定することで、リロード機能をdisabeしようとすることができ""直接

python "" 
# prints: can't find '__main__' module in '' 

を実行して、そのエラーをシミュレートすることができますインタラクティブなセッションでも実行できます。しかし、なぜあなたはそれをしますか?ファイルを入れて実行するだけです。

関連する問題