flaskプロジェクトでdotenvを使用しています。また、これをダンプテスト環境でもテストしました。アンインストールや再インストールなどを試みましたが、pythonでdotenvモジュールが見つかりません。
起動時にflaskは、いくつかの.envファイルがあることを確認し、dotenvがインストールされていて、フラスコシステムライブラリでそれを確認できますが、dotenvをインストールするように指示します。
コードを実行すると、dotenvが見つからないというモジュールが見つかりませんというエラーが表示されます。コードは
import os
from dotenv import load_dotenv
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
そしてエラーは
アドバイスはありがたいことに受け入れられました。
私のコードには多くの問題があったことがわかりました。他の誰かが同じ問題を経験した場合に備えて、ここに簡単にリストします。
かなり新しいので、pythonエコシステムを一緒にインストールしたエコシステムがどのようにハングアップするか、本当に明確ではありません。AnacondaとSpyderを開発環境としてインストールしました。しかし、Flaskチュートリアル、仮想環境のインストーラーとしてpipを使用しています。使用するコマンドプロンプトは、Anacondaに付属しているものです。dotenv問題が発生するまで、すべてが正常に機能しているようです。全体的にかなり大きなチュートリアルの詳細。
Dotenvを修正するために、pipを使用してあらゆる種類のインストール/アンインストールを試みましたが、dotenv wasが既にインストールされていることがわかりました!それはうまくいきませんでした。機能したのは、コマンドプロンプトでcondaを使用してdotenvをインストールすることでしたが、dotenvの取得元を明示的に指定する必要がありました。機能したコマンドは
_conda install -c conda-forge python-dotenv
_
Dotenvをインストールしたら、_.env
_ファイルから環境変数を設定できませんでした。このチュートリアルでは、os.path.dirname(__file__)
を使用して現在の作業ディレクトリを取得します。 ___file__
_は常に小文字ですが、私のディレクトリには大文字が含まれています。その結果、_.env
_ファイルの絶対パスが見つかりませんでした!大文字小文字を区別する組み込みのpathlibモジュールを使用してこれを修正しました。ここにいくつかのコードがあります。
_import os
from pathlib import Path
from dotenv import load_dotenv
# Get the base directory
basepath = Path()
basedir = str(basepath.cwd())
# Load the environment variables
envars = basepath.cwd() / '.env'
load_dotenv(envars)
# Read an environment variable.
SECRET_KEY = os.getenv('SECRET_KEY')
_