Python + Visual Studio Code 環境の準備

方針

プログラミンは初めてであるが,TeXの執筆でVisual Studio Code(以下,VSCode)を使用するので,これからどのような言語を扱うかわからないが,統合環境はVSCodeに統一しようと思う.

もし,使っていてVSCodeの使い勝手が悪いようであれば,それはその時に考える.統合環境に限らず,環境の準備は一筋縄ではいかないので,この記事は試行錯誤の記録になると思われる.いずれは,綺麗にまとめたものを記事にしたい.

前提

Pythonのインストールと環境の構築

まず問題になるのが,どのバージョンのPythonを入れるべきかであるが,調べたところメジャーなバージョンが2.7系及び3.8系らしいのでそれを入れてみることにする.

pyenv

Pythonのバージョンはpyenvで管理するので,Homebrewpyenvをインストールする.

$ brew install pyenv

バージョンの確認

$ pyenv -v
pyenv 2.0.5

pyenvの必要な設定を~/.zshrcに記述する.viなどは初心者には使いづらいので,VSCodeで編集するのが直感的で良いと思う.

VSCodeから~/.zshrcを編集するには,

$ code ~/.zshrc

とすれば良い.ファイルの上の方に次を記述する.

# pyenvさんに~/.pyenvではなく、/usr/loca/var/pyenvを使うようにお願いする
export PYENV_ROOT=/usr/local/var/pyenv
# 同じところにpathを通す
export PATH="$PYENV_ROOT/bin:$PATH"
# pyenvさんに自動補完機能を提供してもらう
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

上書き保存をして,ターミナルを入り直す. (コマンドでターミナルを再起動する方法があるらしいが,よく意味がわかっていないでの,一度exitして,「新しいウィンドウを開く(⌘+N)」している.)

上の設定ができているか確認する.

$ pyenv root
/usr/local/var/pyenv

複数のpython環境の構築及び切り替え

pyenv install --listとするとインストール可能なリストを表示.2.x系と3.x系の最新をいれることにする.grepを使って絞り込む.

~ >>> pyenv install --list  | egrep '^[ ]+[23]\.[0-9\.]+$' | grep ' 2' | tail -n 1
  2.7.17
~ >>> pyenv install --list  | egrep '^[ ]+[23]\.[0-9\.]+$' | grep ' 3' | tail -n 1
  3.8.2

よって 2020/03/31 現在最新の2.7.173.8.2をいれることにする.

~ >>> pyenv install 3.8.2
~ >>> pyenv install 2.7.17

インストール後は

~ >>> pyenv rehash # Rehash pyenv shims (run this after installing executables)

とするといいらしい.インストールしている python を確認するには

~ >>> pyenv versions
* system (set by /usr/local/var/pyenv/version)
  2.7.13
  3.8.2

このままでは,system の python が使われているので,

~ >>> pyenv global 3.8.2 # globalで切り替え
~ >>> pyenv versions
  system
  2.7.13
* 3.8.2 (set by /usr/local/var/pyenv/version)

とすれば,3.8.2に切り替わる.

~ >>> zsh -l # zshの再起動
~ >>> python --version
Python 3.8.2

仮想環境 venv

python 自体に組み込まれている仮想環境作成ツール. もともと virtualenv という独立したツールだったが、python3.3 から組み込まれた.

~ >>> python -m venv [環境名]

で環境を作成.例えば,

~ >>> python -m venv ~/Documents/py_work/py3env

Documentに作成した.この中の構成は,

bin/
  activate # この環境を利用するためのスクリプト
  pip # この環境用のpip
  python # pythonの実態へのリンク
include/
lib/ # この環境のpipでインストールしたライブラリはこの下に置かれます。
pyenv.cfg

でライブラリもこの中に置かれるので他を汚さない.

ただし,これではまだ環境は有効になっていないので,

~ >>> source [環境名]/bin/activate

とする.この環境から出る場合は,

~ >>> deactivate

とすればいい.環境をリセットしたい場合は,deactivateした状態で,

~ >>> python -m venv --clear [環境名]

とする.

pip

python のパッケージ管理ツールで,Python2.7.9以降、Python 3.4 以降からデフォルトで付属する.

pip は環境内に存在するので,pipでパッケージを管理する場合は,環境ごとにいれる必要がある.(パッケージのキャッシュは存在するみたいなので,毎回ダウンロードするわけではない.)

~ >>> pip -V # or pip --version
pip 19.2.3 from /usr/local/var/pyenv/versions/3.8.2/lib/python3.8/site-packages/pip (python 3.8)

でバージョンの確認.

よくわかっていないが,path が通っている場合は,python -mはつけてもつけなくても良い.例えば,

~ >>> python -m pip -V
~ >>> pip -V

は同じ.

pip パッケージの管理

インストールしているパッケージを確認

pip list

or

pip freeze

freezeは表示形式が違って,細かく設定できるらしい.また,テキストファイルとして書き出すことも可能

pip freeze > requestment.txt

パッケージのアップデートは,

~ >>> pip list --outdated

でアップデートのあるパッケージを確認

~ >>> pip install --upgrade [package]

でアップデートできる.

pip-review で一括アップデート

環境にpip-reviewをインストールする.

pip install pip-review

次のコマンドで一括アップデートできる.

pip-review --auto

VSCodeの設定

VSCode側の設定は簡単で通常通り拡張機能(⌘⇧X)を入れれば良い.現在導入しているPython関連の拡張機能は,

  • Python(必須)

  • Pylance

  • Jupyter

コマンドパレット(⌘⇧P)→設定(JSON)を開くからsettings.jsonに次を記述する.

"python.pythonPath": "/usr/local/var/pyenv/shims",
"python.defaultInterpreterPath": "/usr/local/var/pyenv/shims",

まとめ

これで一応の準備はできたはずである. 次回以降は,実際にコードを書いて練習してみる.