前置き
ProgateのPythonコースを完了し、いくつかの書籍を学んだ程度の駆け出しです。
原因が分かった時、初歩的なことだったのですが、意外と国内外でも検索すると質問されている方が多く、でも初歩的だからか回答得られずに迷っている方がいたので、解決方法を残しておきます。M1 Macbook Proで同エラーに悩まされ、原因がわからずWindowsで調べましたが、Macでも同じ方法で解決可能です。
開発環境
Windows10
Visual Studio Code
Python v3.8.5
Conda v4.9.2
json keyfileが見つからないエラー
下記のエラーはファイル、またはディレクトリが見つからない
というエラーです。
エラーの意味はわかるんだけど、なんで見つからないの・・・という気持ちで調べていました。
service_account.py", line 219, in from_json_keyfile_name
with open(filename, 'r') as file_obj:
FileNotFoundError: [Errno 2] No such file or directory: '~~~~~~.json'
頭を抱えながらTerminalをぼーっと見ていたら、解決しました。
condaでmyenv385という名前の環境を作っていますが、pyファイルはDドライブのPythonフォルダの中に、内容ごとにフォルダを分けてアウトプットしています。
Dドライブ
└ Python
├ gspread
├ googlecredential.json
├ spreadtest.py
├ test
├ ...
VSCのワークスペースをDドライブのPythonに指定している為か、conda activate myenv385を実行すると下記のようになります。
(myenv385) D:\Python>
spreadtest.pyをVSCのターミナルでPythonファイルを実行を行った際に発生しました。
つまりどういうことかというと、D:\Pythonにはgooglecredential.jsonが見つからないということなんですね。
下記コマンドをターミナルに入力し、ディレクトリを移動しましょう。
(myenv385) D:\Python>cd gspread
# 下記のように移動できればOK
(myenv385) D:\Python\gspread>
この状態で再度VSCのPythonファイルを実行すればエラーが出ずにpyファイルが正しく実行されます。
結論
実行時の仕組みを勘違いしていることが原因でした。
実行させるpyファイルから見たときに、相対パスで同じディレクトリに存在していれば問題ないと思っていたこと。