[macOS] PyenvでPython使う (VSCode)


mac に乗り換えてデフォルトで python 入ってんだ、へぇと思い、
VSCode 使ってコード書いてみたら、こんな感じで軽く注意された

You have selected the macOS system install of Python,
Which is not recommended for use with the Python 
extension. Some functionality will be limited, please select a 
different interpreter.

デフォルの python は VSCode 非推奨と言っとる。。
色々ゴニョゴニョやって怒られなくなったのですが、もう一度同じ事ができる気がしなかったのでメモ

環境

macOS Mojave 10.14.2
Visual Studio Code 1.30.2
Python 2.7.10

の環境に以下を追加する

pyenv 1.2.9  → pythonの複数バージョンを切り替えるため
anaconda3-5.3.1  →  色々入ってて便利なため

VSCodeの拡張機能

そもそもこれ入れないと注意すらされない

VSCode の拡張機能から、 python と入力して入れる

pyenv インストール


$ brew install pyenv

brewは 公式を参考に1ライナーでインストール可能

pyenv のインストールが無事終わると、最後の方に忠告がある


==> Caveats
To use Homebrew's directories rather than ~/.pyenv add to your profile:
  export PYENV_ROOT=/usr/local/var/pyenv

To enable shims and autocompletion add to your profile:
  if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

・ デフォルトだと ~/.pyenv なので、 /usr/local/var/pyenv を指定してね。的な
・ 自動補完機能使うには、 eval "$(pyenv init -)" やってね。的な

忠告に従い以下の様に追記


$ vi ~/.bash_profile

export PYENV_ROOT=/usr/local/var/pyenv
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

$ . ~/.bash_profile

因みにどうでもいいですが、以下を eval で評価して実行してた


$ pyenv init -
export PATH="/usr/local/var/pyenv/shims:${PATH}"
export PYENV_SHELL=bash
source '/usr/local/Cellar/pyenv/1.2.9/libexec/../completions/pyenv.bash'
command pyenv rehash 2>/dev/null
pyenv() {
  local command
  command="${1:-}"
  if [ "$#" -gt 0 ]; then
    shift
  fi

  case "$command" in
  rehash|shell)
    eval "$(pyenv "sh-$command" "$@")";;
  *)
    command pyenv "$command" "$@";;
  esac
}

pyenv のインストールが完了


$ type pyenv
pyenv is /usr/local/bin/pyenv

$ pyenv --version
pyenv 1.2.9

python3のインストール

インストール可能なリストを表示


$ pyenv install -l | grep anaconda3
  anaconda3-2.0.0
  anaconda3-2.0.1
  anaconda3-2.1.0
  anaconda3-2.2.0
  anaconda3-2.3.0
  anaconda3-2.4.0
  anaconda3-2.4.1
  anaconda3-2.5.0
  anaconda3-4.0.0
  anaconda3-4.1.0
  anaconda3-4.1.1
  anaconda3-4.2.0
  anaconda3-4.3.0
  anaconda3-4.3.1
  anaconda3-4.4.0
  anaconda3-5.0.0
  anaconda3-5.0.1
  anaconda3-5.1.0
  anaconda3-5.2.0
  anaconda3-5.3.0
  anaconda3-5.3.1
  anaconda3-2018.12

最新を入れる(5分ぐらいかかった気がします)
今回はanaconda入れてますが、普通に2系とか3系とか入れれます


$ pyenv install anaconda3-5.3.1
Downloading Anaconda3-5.3.1-MacOSX-x86_64.sh.sh...
-> https://repo.continuum.io/archive/Anaconda3-5.3.1-MacOSX-x86_64.sh
Installing Anaconda3-5.3.1-MacOSX-x86_64.sh...
Installed Anaconda3-5.3.1-MacOSX-x86_64.sh to /usr/local/var/pyenv/versions/anaconda3-5.3.1

インストールが終わったら、 pyenv versions で切り替え可能な python を参照

~$ pyenv versions
* system (set by /usr/local/var/pyenv/version)
  anaconda3-5.3.1

pyenv global 'Interpreter' で切り替える

$ pyenv global anaconda3-5.3.1

もう一度 pyenv versions で確認してみると、「*」の場所が変わってる

$ pyenv versions
  system
* anaconda3-5.3.1 (set by /Users/ando/.pyenv/version)

インタプリタちゃんと変わってた

$ python -V
Python 3.7.0

$ type python
python is /usr/local/var/pyenv/shims/python

因みに、 pyenv local Interpreter とすると、そのディレクトリのみ切り替わる


~$ mkdir py2
~$ cd py2 
~/py2$ pyenv versions
  system
* anaconda3-5.3.1 (set by /usr/local/var/pyenv/version)
~/py2$ pyenv local system
~/py2$ python -V
Python 2.7.10
~/py2$ cd ..
~$ python -V
Python 3.7.0

VSCode の Python Interpreter の指定

ようやく本題

Code → 基本設定 → 設定
適当にスクロールしてどこかしらで、 settings.json を見つけて編集をポチ
で以下の様にインストールした python のインタプリタを指定

settings.json
{
    "python.pythonPath": "/usr/local/var/pyenv/versions/anaconda3-5.3.1/bin/python"
}

ワークスペースの設定 にも同様に指定
※ここポイント(これやんなくて、あれって30分ぐらいなってた)


    "settings": {
        "python.pythonPath": "/usr/local/var/pyenv/versions/anaconda3-5.3.1/bin/python"
    }

これで VSCode で pythonファイル開いても、警告がでなくなりました

因みに VScode でF1押して、検索窓出して、 Python: Select Interpreter と入力すると、
インタプリタの指定が出来ます。そして、macデフォルトを指定すると当たり前ですがまた警告が出ます。
python2系使う場合、 pyenv で別途インストールが必要です。