PlatformIOにおいて, ModuleNotFoundErrorによりビルドができない.

実現したいこと

PlatformIOにおいて, ModuleNotFoundErrorを解決したい.

環境

Windows11
PlatformIO on VScode
Python 3.8.17
Jinja2 3.1.2
PlatformIO Core 6.1.9 Home 3.4.4
platfomrm nxplpc 5.3.0
MbedOS 5.15.4

詳細

私は現在VScodeの拡張機能のPlatformIOを用いてビルドを行っています. 当初はビルドが行えていたのですが, 先日PlatformIOのアップデートを行ったところビルドができなくなってしまいました. (アップデート直前までビルドをしていたわけではないので, これが原因なのかは微妙なところです.)

ビルドを行うと次のようなエラーが起こってしまいます.

ModuleNotFoundError: No module named 'jinja2': File "C:\Users\***\.platformio\penv\Lib\site-packages\platformio\builder\main.py", line 175: env.SConscript("$BUILD_SCRIPT") //以後依存関係が続き...最後に File "C:\Users\***\.platformio\packages\framework-mbed\tools\build_api.py", line 32: from jinja2 import FileSystemLoader

つまり, jinja2というmoduleがないようです.

試したこと

そこで以下の内容を確かめました.
①pythonとjinja2のバージョン互換性
②jinja2がインストールされて, 単体で読み込めるかどうか
➂Jinja2とjinja2のエイリアスが結びついているのかどうか

①pythonとjinja2のバージョン互換性

platformIOを実行している同一ターミナル上で以下のコマンドを実行しpythonとjinja2のバージョンを確認しました.(以降ターミナルはこれと同じ)

python --version//pythonのバージョン pip list//jinja2のバージョン //結果 Python 3.8.17 Jinja2 3.1.2

次に以下のサイトで検索をかけてjinja互換性を確認しました.(jinja2は今のjinjaの呼び方らしい)
https://jinja.palletsprojects.com/en/3.1.x/changes/

これによると, jinja2はversion 3.1.0で python 3.6のサポートを終了しているのですが, python3.8.17については大丈夫だということがわかりました.

②jinja2がインストールされて, 単体で読み込めるかどうか

次にjinja2がpythonに読み込まれているか確認しました.
まず, 以下のコマンドでmoduleのpathが通っているか確認しました.

python >>import sys >>print (sys.path) //結果 ここにきちんとjinja2があった. C:\\anaconda3\\lib\\site-packages

すると, きちんとmoduleのpathが通っていることがわかりました.
またpythonプロンプトを起動し, jinja2を単体でimportすると読み込めることがわかりました.

python >>import jinja2 //これは大丈夫だった.

➂Jinja2とjinja2のエイリアスが結びついているのかどうか

①でpip listで確認した際にjinja2ではなくて, Jinja2と表示されました. そこで, このエイリアスが適応されているか確認することにしました.

しかし, このエイリアスを一覧として表示する方法が分からなかったので, 該当のエラー箇所をJinja2に書き換えることで同様のエラーが起こるかどうかを確認しました.

File "C:\Users\***\.platformio\packages\framework-mbed\tools\build_api.py", line 32: from Jinja2 import FileSystemLoader

結果はエラーの一番下の箇所が次のようにJinja2に変わるだけでした.
つまり, エイリアス自体は問題ではないということがわかりました.

教えてほしいこと

具体的にエラーを解決する方法または, エラーの原因を教えていただけると幸いです.

私としては上記以外には以下のような可能性しか考えられないのですが, どう対処すべきかわからないです.

  1. PlatformIOのバージョンが関係することがあるのでしょうか?
  2. 少し古いplatformを対象にビルドをしているのが原因?だとしてもなぜ?(MbedOS 5.15.4, nxplpc 5.3.0, できればこのままにしたい)

以下のplatformIO communityでも確認しましたが, 最近jinja2に関する同様の現象は確認されませんでしたので, 2が原因の可能性があるかもしれません.
https://community.platformio.org/

拙い部分もあると思いますが, どうぞよろしくお願いいたします.

コメントを投稿

0 コメント