Flaskでinstanceフォルダが認識されない場合の対処方法
Dec 26, 2017 · webpython
virtualenv
の環境でFlask
のinstance
フォルダがうまく認識されなかった時の対処方法
状況
環境としては、IDEにPyCharm
を利用。Pythonはvirtualenv
の仮想環境を利用
Project
- main.py
- instance
- app.cfg
みたいな感じのフォルダ構成で
app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile('app.cfg')
とすると、正しくはinstance
フォルダ内のapp.cfg
の設定が読み込まれるはずだが、
このファイルが見つからないとエラーになっていた
instance_path
で絶対パスを指定すると正しく読み込まれるが、
Bluemix
で使う実装なので絶対パスは使いたくなかった
で、デバッガでパスを見ると、PyCharm.app
の中のbin
が指定されていた・・・
原因
結論から言うと、フォルダ構成が
Project
- main.py
- instance
- app.cfg
- venv # <-ここがNG
となっていたのが原因。どうやらプロジェクト直下にvenv
があると、正しく認識してくれないらしい
(詳細は参考リンクを参照)
特にPyCharm
の場合だとデフォルトで新しい仮想環境をプロジェクト直下に作ってくれるのでハマってしまった・・・
対処方法
仮想環境をプロジェクト直下ではなく別のフォルダに構築する。今回だと
Project
- main.py
- instance
- app.cfg
venv
という様にProject直下ではないところに仮想環境を構築したら改善した
PyCharmでの修正手順
- 既存の仮想環境を削除
Preferences
-Project:
-Project Interpreter
を開くProject Interpreter
の右端にある「歯車」アイコン -Show All...
を開く- 現在のプロジェクトのものを選択し、左下の「ー」で削除
- 新しい仮想環境を作成
- 左下の「+」 -
Add Local
を開く Virtualenv Environment
-New environment
にチェックLocation
にプロジェクト直下以外を選択して作成(他は任意に選択)
- 左下の「+」 -
Project Interpreter
のリストボックスに2で作った仮想環境が出てくる様になるので選択- 設定画面を閉じるとモジュールのインストールの確認画面が出てくるのでインストールする
- 実行時の設定を変更
- メニューの
Run
-Edit Configurations
を選択 Working directory
にプロジェクトのフォルダ位置を指定する
- メニューの