キカガクをきっかけに機械学習を勉強した人がどんな感じで生きてるかをお知らせするサイト。メモ書きとかしてます。ちなみにキカガクは「機械学習」の略だそうです。幾何学じゃなかったんかー。

load_dotenv()で、メインディレクトリの.envを参照して、直接パスを指定しても変更されない

とても迷ったのでメモしておきます。

状況

メインディレクトリ
├── .env
├── .gitignore
├── README.md
├── requirements.txt
├── directory1
│ ├── app.py
│ └── .env
└── directory2

こんな感じで、.envが複数ありました。

これは、書籍に従って写経していたため。
章ごとにフォルダを分けていた関係で、.envがたくさんできていた状態。

かつ、最初はメインディレクトリで操作をしていたので、メインディレクトリにも.envファイルが。

この状態で、directory1のapp.pyを実行しようとすると、メインディレクトリの.envが動いていて、エラーが出ていた。

#app.pyの中身の例
import os
from dotenv import load_dotenv

load_dotenv('/Users/user/Desktop/directory1/.env')
#実行コードの例
(myenv) user@user-Mac % python /Users/user/Desktop/directory1/app.py

カレントディレクトリをかえたらうまく動いた

cd /Users/user/Desktop/Project/directory1
(myenv) user@user-Mac directory1 % python app.py

コードで直接パスを指定しているのだから問題ないと思いこんでいました。

なんかよくわかっていない理由がありそうだけれど、とりあえず、解決できたのでヨシ!

タイトルとURLをコピーしました