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

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

新規登録して質問してみよう
ただいま回答率
85.53%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Q&A

解決済

2回答

496閲覧

flask runしたらエラーになる

yasuuu

総合スコア9

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

0グッド

0クリップ

投稿2023/11/01 09:08

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • Flaskアプリを起動させる

前提

『Python FlaskによるWebアプリ開発入門』という書籍を読み進めています。
そのp38あたりでつまづいており...
アプリケーションルートをflaskbookに変更後、flask runを実行すると、下記のエラーが出てしまいます。
原因が分かる方はいらっしゃいますでしょうか?

アプリケーションルートの変更がちゃんとできていないように思いますが、それもどうやるのか分からずです><

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

Usage: flask run [OPTIONS] Try 'flask run --help' for help. Error: Could not locate a Flask application. Use the 'flask --app' option, 'FLASK_APP' environment variable, or a 'wsgi.py' or 'app.py' file in the current directory.

該当のソースコード

# .envファイルの中身は下記。 FLASK_APP=apps.minimalapp.app.py FLASK_DEBUG=1

試したこと

https://teratail.com/questions/8jz8egzsn8gu58

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

  • .envファイルの中身を下記に書き換えて、ディレクトリをapps/minimalappに変えた上でflask runすると、正常に動作する。
FLASK_APP=app.py FLASK_DEBUG=1

イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

1

以下で動きました。

  1. rootディレクトリ作成(表記の都合上、以下rootと書く)
  2. root/apps/minimalappディレクトリ作成
  3. root/apps/minimalapp/app.pyファイル作成
  4. root/.envファイル作成
  5. python3 -m venv venv
  6. venvをアクティベート
  7. pip install flask python-dotenv
  8. root/apps/minimalapp/app.pyに[※1]を追加
  9. root/.envに[※2]を追加
  10. rootに移動し、flask runを実行する

※1

python

1from flask import Flask 2 3app = Flask(__name__) 4 5 6@app.route('/') 7def hello_world(): 8 return 'Hello World!' 9 10 11if __name__ == '__main__': 12 app.run() 13

※2

text

1FLASK_APP=apps.minimalapp.app 2FLASK_DEBUG=1 3

画像を見ると、apps/minimalapp/.envが存在するように見えます。
app.pyapps/minimalapp/app.pyにあるように見えます。
dotenvは使ったことがありませんが、rootをカレントとして実行している場合、.envが見えないような気がするので、.envをカレントに移動して実行したら動きました。

.envをapps/minimalapp/.envに置き、カレントをapps/minimalappに移動した状態で、flask runを実行すると、以下のエラーが表示されます。

text

1flask run 2Usage: flask run [OPTIONS] 3Try 'flask run --help' for help. 4 5Error: Could not import 'apps.minimalapp.app'. 6

.envの中身を書き換えて実行すると実行できると言う事ですが、flask runは、エラーメッセージに書いてあるとおり、カレントの'wsgi.py' or 'app.py'を探します。
そのため、python-dotenvがインストールされているのを確定できていませんので、もしかしたら動かないかもしれません。
その場合、作成したvenvをactivateできているかを確認し、activateしたpythonにpython-dotenvをインストールできているかを確認してください。

投稿2023/11/02 01:02

FiroProchainezo

総合スコア2385

yasuuu👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yasuuu

2023/11/02 02:10

ありがとうございます。おっしゃる通り、.envをカレント(flaskbook)に作り直したら、起動しました!
guest

1

ベストアンサー

自分はFLASK_APP環境変数は使わないのですが、FLASK_APPで指定するのはモジュール名かファイル名のいずれかのようです。
(「モジュール名」というものがあまり理解できなければ、説明が長くなるので簡単に言えば、import 文で指定するものです)

FLASK_APP=apps.minimalapp.app.py

flaskがモジュール名とファイル名をどのように判別しているかはわかりませんが、少なくともapps.minimalapp.app.py というのは、(指定したスクリプトファイルが apps/minimalapp/app.py だとして)「モジュール名」としても「ファイル名」としても不適切です。

FLASK_APP=apps.minimalapp.app

か、

FLASK_APP=apps/minimalapp/app.py

のいずれかで指定すべきだと思います。


上記2パターンの両方試してみたのですが、やはり同じエラーが出てしまいます...涙

うーん、おかしいですね。
一応自分の方では、空のディレクトリで以下のようにすれば問題なく動作しました。

sh

1python3 -m venv env 2. env/bin/activate 3python3 -m pip install flask python-dotenv 4mkdir -p apps/minimalapp 5cat <<EOF >apps/minimalapp/app.py 6from flask import Flask 7app = Flask(__name__) 8EOF 9cat <<EOF >.env 10FLASK_APP=apps.minimalapp.app 11FLASK_DEBUG=1 12EOF 13flask run

投稿2023/11/01 11:18

編集2023/11/01 23:24
katsuko

総合スコア3443

yasuuu👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yasuuu

2023/11/01 19:18

回答ありがとうございます。 上記2パターンの両方試してみたのですが、やはり同じエラーが出てしまいます...涙 ``` Usage: flask run [OPTIONS] Try 'flask run --help' for help. Error: Could not locate a Flask application. Use the 'flask --app' option, 'FLASK_APP' environment variable, or a 'wsgi.py' or 'app.py' file in the current directory. ```
katsuko

2023/11/01 23:31

確認しますが、`python-dotenv`はインストールされてますか? 試しに`python-dotenv`をアンインストールして試したら同じ現象になったのですが。
yasuuu

2023/11/01 23:45

pip listコマンドで確認したら、以下になったので、インストールできていると思うのですが... ``` $ pip list Package Version ----------------- ------- black 23.10.1 blinker 1.6.3 click 8.1.7 flake8 6.1.0 Flask 3.0.0 isort 5.12.0 itsdangerous 2.1.2 Jinja2 3.1.2 MarkupSafe 2.1.3 mccabe 0.7.0 mypy 1.6.1 mypy-extensions 1.0.0 packaging 23.2 pathspec 0.11.2 pip 23.2.1 platformdirs 3.11.0 pycodestyle 2.11.1 pyflakes 3.1.0 python-dotenv 1.0.0 typing_extensions 4.8.0 Werkzeug 3.0.1 ```
katsuko

2023/11/01 23:53

スクリーンショットを家訓しましたが、`.env`ファイルと`app.py`を同じディレクトリに入れてませんか? `.env`ファイルは、`flask`コマンドを実行するカレントディレクトリに置くんじゃないですか。
yasuuu

2023/11/02 01:36

ありがとうございます!`.env`ファイルを置き直したら、起動しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

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

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。