質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.34%

Flaskをターミナルで実行するときのエラー

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,760

score 280

前提・実現したいこと

Flaskをターミナルで実行しようとしています。

発生している問題・エラーメッセージ

フォルダflask_setup_example配下で以下のコマンドを打ったのですが、エラーメッセージが出て起動させることができません。

$ export FLASK_APP=flaskr
$ export FLASK_ENV=development
$ flask run

エラー内容のフォルダ名も拡張子も確認しましたが、他に解決法がわからず困っています。

Usage: flask run [OPTIONS]

Error: The file/path provided (flaskr) does not appear to exist.  Please verify the path is correct.  If app is not on PYTHONPATH, ensure the extension is .py

該当のソースコード

flask_setup_example/flaskr/__init__.pyというパスで以下のプログラムを置いています。

from flask import Flask

def create_app(test_config=None):
    app = Flask(__name__)

    return app

補足情報(FW/ツールのバージョンなど)

python Python 3.6.0 :: Anaconda 4.3.0
macOS Catalina バージョン10.15
ターミナル バージョン2.10

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • nico25

    2019/10/13 20:10

    エラー文を翻訳すると、以下のようになります。

    エラー: Flask アプリケーションの場所を特定できませんでした。FLASK_APP 環境変数が提供されていませんでした、また "wsgi.py" または "app.py" は現在のディレクトリに見つかりませんでした。
    Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.

    flask run コマンドは「FLASK_APP 環境変数が提供されてい」なかった場合、見つけられなかった場合、次にカレントディレクトリに「wsgi.py」または「app.py」が無いか探しています。つまり後半のエラー文は、「wsgi.py」または「app.py」も見つけられなかったと言っています。

    キャンセル

  • tenjin

    2019/10/13 20:24

    翻訳いただきありがとうございます。その理解でしたが、「FLASK_APP 環境変数が提供されていない」という点で確かにflaskrフォルダは存在しており、FLASK_APP=flaskrコマンドも通っているので原因が全くわからない状態です。

    キャンセル

  • nico25

    2019/10/13 21:41

    お力添えできず、申し訳ないです。


    ① 調べて見たこと
    もしかして Anaconda を使うと環境変数が別になるのかな、
    と思って確認もしてみたのですが、そのような記事は見つかりませんでした。

    そのため症状としては環境特有で、
    力技で色々と再インストールしていけば直るのかなと見ています。



    以下、やってみるべきという訳では無いのですが、自分ならこれをするというのを書きます。

    ② やって見たいこと
    os.environ に環境変数 FLASK_APP が入っているかを調べたいです。
    もしここで os.environ の中に問題なく FLASK_APP があれば...

    Anaconda や OS の問題ではなく Python のパッケージに問題があると見て、
    Flask だけではなく Flask に関連するパッケージを全て再インストールしてみるという手順を踏みます。

    breakpoint を仕掛ける場所は、どこでもいいのですが、
    候補としては以下2点かなと思います。

    1) そのため、ちゃんとやるなら、ここか...
    ```python
    class ScriptInfo(object):
    def __init__(self, app_import_path=None, create_app=None, set_debug_flag=True):
    #: Optionally the import path for the Flask application.
    self.app_import_path = app_import_path or os.environ.get("FLASK_APP")
    ```
    https://github.com/pallets/flask/blob/c478e5d52f4985a9a58f1ac1d229b47e9f6fe24f/src/flask/cli.py#L358

    flask run コマンドは、ここで os.environ.get("FLASK_APP") を使い環境変数を取得しています。


    2) あるいは簡単にやるなら、flask コマンドは Python のスクリプトなので
    which コマンドで場所を特定して、そこに breakpoint を仕掛けます。
    $ which flask
    $ vim [which flask コマンドの結果]

    中はこんな感じのスクリプトです。

    ```
    #!/Users/user/venv/bin/python3
    # -*- coding: utf-8 -*-
    import re
    import sys

    from flask.cli import main

    if __name__ == '__main__':
    breakpoint()
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
    ```

    自分の環境では 1), 2) の両方で os.environ から環境変数 FLASK_APP が取得できました。


    ③ やるかもしれないこと
    もし os.environ で FLASK_APP 環境変数が取得できていなければ...
    Anaconda を再インストールするという手順を自分なら踏みます。

    キャンセル

回答 1

checkベストアンサー

0

同じエラーに直面した物です。

私は、ターミナルを再起動させることで解決致しました。
原因はわかりません。

すでに解決しているとは思いますが、
この記事に解決案がなかったので回答させていただきます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る