1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCodeでPythonのLambda(SAM)をローカルデバッグしようとしたらハマった

Posted at

ざっくりまとめ

  • pyenv global 3.9.6とかでPython3.9系をGlobalで利用するようにしていた
  • この状態でVS CodeからLambdaのデバッグを実行しようとするとSAMのビルドでコケる
    • SAMでビルドするときにpython3.8を要求するため
  • pyenv global 3.9.6 3.8.10とかでpython3.8が実行できるようにしてあげる必要があった

背景

SAMでアプリをカキカキしようとしてデバッグしたいなーと思ってぺいっとF5をを押したらこんなエラーが

2021-08-11 18:32:36 [INFO]: 
Build Failed

2021-08-11 18:32:37 [INFO]: Error: PythonPipBuilder:Validation - Binary validation failed for python, searched for python in following locations  : ['/Users/****/.pyenv/shims/python3.8', '/Users/****/.pyenv/shims/python', '/usr/bin/python'] which did not satisfy constraints for runtime: python3.8. Do you have python for runtime: python3.8 on your PATH?

2021-08-11 18:32:37 [WARN]: "sam build" failed: /Users/****/work/test-sam/app___vsctk___template.yaml

ちーん

試したこと

python3.8が叩ければいいんだなということで色々試す

  • このsam templateが置かれてるWorkDirでpyenv local 3.8.11
    • 普通にコマンドライン上ではsam buildができるようになる
    • VS Code経由でsam実行されると同じエラー
    • どうやらpyenvのアレコレが効いてくれない...
  • pyenv global 3.8.11
    • 普通に通るようになった
    • どこのパスにいてもpython3.8を実行できるようにしておけばいいんだな
    • でもこうするとglobalで使いたいpython3.9が使えなくなってまうで...

解決

  • pyenv global 3.9.6 3.8.11
    • バージョン複数指定してあげるとそのバージョンのバイナリも叩けるようになる
    • 知らなかった
  • バージョンは先頭に来る方が優先される模様
    • ↑の場合はpython pipとかで実行されるpythonは3.9.6になる

結論

pyenvのドキュメントちゃんと読みましょう

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?