Python3.6で sls invoke local すると `Error: spawn python3.6 ENOENT`

サーバレスなアプリケーションを構築するためのツール Serverless Framework で Python3系が使えるようになったということを最近知って

dev.classmethod.jp

の記事を参考に使ってみました。

ただ、

sls invoke local とローカルでファンクションを実行すると、

Error: spawn python3.6 ENOENT

が出ちゃう.. ╰(゚x゚​)╯

デプロイした remote で実行すると問題なく動くのだが気持ち悪い…

Webを検索すると同じエラーが出ている人がいたのでこれを参考にやってみる

https://doruby.jp/users/nakamatsu/entries/%60sls-invoke-local%60-%E3%81%99%E3%82%8B%E3%81%A8%60Error–spawn-python3-6-ENOENT%60%E3%81%A8%E8%A8%80%E3%82%8F%E3%82%8C%E3%81%9F

が、これでもうまくいかない… (◞‸◟)

解決方法

結局うまくいった方法はこれでした。

$ brew install python3   # pyenvで3.6をインストールしてもNG。system環境に3.6をインストールする
$ pyenv local system  # パッケージをインストールするときはsystem環境のpythonにして行う
$ pip3 install requests  # pyenvのsystem環境で必要なパッケージ(この場合は requests)をインストール

この3ステップでエラーが出なくなりました。(2番目のステップが抜けてました)

スッキリです。(•̀ᴗ•́)و

ちなみに、パッケージがすでにインストールされていてファンクションを実行するだけのときは pyenv で system環境 にしなくても実行できるようです。